Arduino a DS18B20

TomasP

Re:Arduino a DS18B20
« Odpověď #30 kdy: 04. 07. 2012, 07:04:09 »
Miro, díky! Dle tvých rad šlape... Vlastně to PWM funguje jak dioda - digitalWrite(9, HIGH) a točím naplno a LOW stojím, ale pokud tam dám něco jako 10, tak to nereaguje, dá se to nějak? Jednou mi to reagovalo a točil se pomale, ale teď se se mnou odmítá bavit...


Petr

Re:Arduino a DS18B20
« Odpověď #31 kdy: 04. 07. 2012, 07:58:00 »
digitalWrite je funkce, ktera na pin posle bud 5 V nebo 0 V. Pokud bys chtel neco mezi, musis pouzit funkci analogWrite. Ale nejlepsi bude te odkazat na web Arduina - http://arduino.cc/en/Reference/AnalogWrite
Je fajn, ze se zkousis v Arduinu vrtat, ale radeji to res na foru Arduina. Uz na oficialnim webu je spousta tutorialu (i tutorial na PWM), na foru se pak uchrochtas blahem. Preci jen tohle je server o trosku necem jinem a ne vzdy se tady dohledas spravnych informaci.
Tim ale nerikam, ze nepomuzeme  ;)

TomasP

Re:Arduino a DS18B20
« Odpověď #32 kdy: 04. 07. 2012, 09:02:50 »
Petře, díky za radu koukal jsem do tutoriálu od Mirka  - http://arduino.cc/it/Tutorial/PWM a proklikl jsem se sem: http://arduino.cc/en/Reference/AnalogWrite a zde jsem podle " call to analogWrite() (or a call to digitalRead() or digitalWrite() on the same pin " usoudil, že je jedno co použiji, moje chyba!

Na rootu jsem našel nějaké články o arduinu a ve fóru něco bylo, tak jsem se zeptal zde, oficiální fórum v AJ mi nedělá dobře, přeci jen je pro mne lepší polopatické vysvětlení v CZ...

Tímto děkuji všem co se snažili poradit :)

Re:Arduino a DS18B20
« Odpověď #33 kdy: 04. 07. 2012, 09:04:47 »
Miro, díky! Dle tvých rad šlape... Vlastně to PWM funguje jak dioda - digitalWrite(9, HIGH) a točím naplno a LOW stojím, ale pokud tam dám něco jako 10, tak to nereaguje, dá se to nějak? Jednou mi to reagovalo a točil se pomale, ale teď se se mnou odmítá bavit...
Rádo se stalo :)

Ne, když použiješ digitalWrite, tak ten pin používáš jako normální digitální výstup (0/1). Jak píše Petr, pokud ho chceš použít jako PWM, musíš použít analogWrite(pin, byte)

Ještě mě teď napadla jedna věc: ten switch S1 zapíná vyrábění 5V z napětí, který napájí motorek. Takže pokud ho budeš mít zapnutej, **nesmíš** na svorku "+5" připojit 5V z Arduina, to by mohlo dělat neplechu.

A ještě jedna poznámka: pokud bys tohle řešení chtěl nasadit na víc místech, nebo by ti bylo líto Arduina, tak si můžeš to stejný zapojení vyrobit podstatně levněji než Arduino+shield. Většina součástek, co tam je, je totiž spíš pro tvoje pohodlí při pokusech. Úplně v pohodě bys to samý mohl docílit pomocí kontroleru Attiny+můstek. V tomhle případě je pokud se nepletu i můstek zbytečnej a můžeš klidně použít darlingtony. Kromě těhle dvou švábů nepotřebuješ asi žádný jiný součástky, maximálně nějakou drobnost v ceně korun.

Attiny je kolem 50Kč: http://www.gme.cz/mikroprocesory-atmel-avr-tiny/attiny25-20pu-p432-223/
Jednodušší můstek za 40: http://www.gme.cz/obvody-pro-rizeni-motoru-mustkove-budice/l293d-p399-017/
Pole darlingtonů 14: http://www.gme.cz/tranzistorova-pole/uln2002a-p380-004/

Takže se to v klidu dá zrealizovat za nějakých sedmdesát korun. Jako programátor Attiny použiješ Arduino. Attiny má dva PWM výstupy, takže jím můžeš ovládat taky dva motorky. Použít Arduino+tenhle shield je hodně overkill :)

TomasP

Re:Arduino a DS18B20
« Odpověď #34 kdy: 04. 07. 2012, 09:28:19 »
JJ s tím analog mi to šlape díky za rady, nějak mi nedošlo že digital = 1 a 0 ...

Teď to je jak kdyby jsi na mě mluvil čínsky, ale určitě se na to kouknu... Tohle řešení bylo zvolený díky lehké rozšířitelnosti např o logování na SD kartu, display.... časem se nejspíše připojí i nějaké senzory kouře/ohně atd a bude sloužit nejen jako řízení odvětrávání, ale bezpečnostní systém atd.... A ten shield je tam kvůli rezervě, původně měl být regulovaný tuším 48V motor :)

Ještě mě napadla jedna věc na kterou bych se zeptal, pokud má ventilátor detekci rotace (http://www.gme.cz/dc-ventilatory-80x80-mm/ventilator-sunon-me80251v1-f99-p625-332/) dá se to v arduinu využít, nebo je lepší použít "žlutý kabel" a z něj načíst otáčky a řešit to tak?


Re:Arduino a DS18B20
« Odpověď #35 kdy: 04. 07. 2012, 09:34:43 »
Ještě mě napadla jedna věc na kterou bych se zeptal, pokud má ventilátor detekci rotace (http://www.gme.cz/dc-ventilatory-80x80-mm/ventilator-sunon-me80251v1-f99-p625-332/) dá se to v arduinu využít, nebo je lepší použít "žlutý kabel" a z něj načíst otáčky a řešit to tak?
Tak to nevím, jak je to udělaný. Ale předpokládám, že detekce rotace bude jenom dvoustavová (točí se/netočí se) jako kontrola, že se větráček nezadřel. Pokud to tak je, tak pokud by ti tahle detekce stačila, tak se to určitě z Arduina bude vyčítat snadněji, protože to čtení otáček bude složitější (budeš muset počítat počet pulzů za vteřinu - a to nebude zas tak jednoduchý, zvlášť pokud budeš chtít, aby Arduino zároveň dělalo i jiné věci).

Re:Arduino a DS18B20
« Odpověď #36 kdy: 04. 07. 2012, 10:21:08 »
Procy by neslo, je to obycejny vetracek. Akorat ma navic hallovu sondu jejiz druhy konec je pripojen na zem.
Každý větráček má Hallovu sondu aby se vůbec otáčel, je to totiž takový stejnosměrný motor naruby - na statoru je několik pootočených vinutí, na rotoru jen permanentní magnet. A protože v takovémto provedení naruby není snadné vyrobit mechanický komutátor, jako u klasického motorku, používá se komutátor elektronický, který přepíná proud do cívek statoru právě podle signálu z hallovy sondy.
Odborně se takovému motoru říká BLDC, ale technicky jde o totéž, co střídavý synchronní motor s permanentními magnety.

Stejný signál je pak i na třetím drátu z větráku, tuším, že jde o 4 pulzy na jednu otáčku. Pozor na to, že pulzy mají amplitudu shodnou s napájecím napětím, takže pokud větrák napájíš 12V, polezou z měřicího výstupu taky 12V impulzy a to může odpálit CPU na arduinu (nevím, jestli nejsou vstupy nějak chráněny, ale moc bych na to nespoléhal) Chce to tedy omezit (třeba sériovým odporem a paralelní zenerovou diodou) výstupní napětí na 5V.

Já se akorát ptám, jestli lze střídou (PWM) regulovat otáčky i u větráku, který má jen 3 piny??? Má -, + a senzor otáček. I do takového větráku lze nahnat PWM? - by bylo - (GND) a na + by se hodil výstup z PWM? Lze to bez poškození větráku (i dlouhodobým provozem)?
PWM je jeden ze způsobů regulace napětí, používá se mimo jiné v každém spínaném zdroji. Takže ano, není důvod, proč by to nešlo. Jen bude potřeba postavit nějaký booster (třeba tento), protože z CPU poleze 0 a 5 V, kdežto do větráku je potřeba pouštět 0 a 12 V.

Re:Arduino a DS18B20
« Odpověď #37 kdy: 04. 07. 2012, 10:35:15 »
Jen bude potřeba postavit nějaký booster (třeba tento), protože z CPU poleze 0 a 5 V, kdežto do větráku je potřeba pouštět 0 a 12 V.

Hezky zapojeni, diky za odkaz, Ondro. Jenom by me zajimala jedna vec: jaka frekvence vlastne leze z toho PWM? (Desitky Hz nebo daleko vic?) Je mozny pouzit jakejkoliv optoclen, nebo by to ty pomalejsi nemusely stihat?

Petr

Re:Arduino a DS18B20
« Odpověď #38 kdy: 04. 07. 2012, 11:13:47 »
PWM u Arduina ma priblizne 490 Hz (opet odkazu http://arduino.cc/en/Reference/AnalogWrite), coz by mely stihat snad vsechny.

Re:Arduino a DS18B20
« Odpověď #39 kdy: 04. 07. 2012, 11:17:03 »
PWM u Arduina ma priblizne 490 Hz (opet odkazu http://arduino.cc/en/Reference/AnalogWrite), coz by mely stihat snad vsechny.
Aha, to jsem prehlidl, diky. Ona totiz u Atmegy muze byt frekvence ruzna (az desitky kHz), takze mi slo o to, jak je to default u Arduina.

kmarty

  • ***
  • 194
    • Zobrazit profil
Re:Arduino a DS18B20
« Odpověď #40 kdy: 04. 07. 2012, 17:12:32 »
Odborně se takovému motoru říká BLDC, ale technicky jde o totéž, co střídavý synchronní motor s permanentními magnety.
Vim, ale nechtel jsem do toho vnaset dalsi, pro tento ucel zbytecnou, komplikaci.

Každý větráček má Hallovu sondu aby se vůbec otáčel
Kazdy nemusi. Otacky/prepinani civek si muze kontrolovat i jen zpetnou magnetickou indukci z tech civek (ale pak je myslim nutne aby mel tri civky, resp pocet polu aby byl nasobkem tri - kvuli prvotnimu roztoceni spravnym smerem).

kmarty

  • ***
  • 194
    • Zobrazit profil
Re:Arduino a DS18B20
« Odpověď #41 kdy: 04. 07. 2012, 17:13:32 »
Aha, ono to mas dokonce zmineny v tom BLDC odkazu ("sensorless controllers").

TomasP

Re:Arduino a DS18B20
« Odpověď #42 kdy: 08. 07. 2012, 22:25:26 »
Pánové, ještě mám jeden dotaz na ventilátoru co jsem vyndal z PC nějaký Xinrulian vše šlape OK, ale na Sunonu (http://www.gme.cz/dc-ventilatory-80x80-mm/ventilator-sunon-me80251v1-g99-p625-211/) při analogWrite nižším jak 255 se ventilátor ani neroztočí... Přiznám se, že na pokusy nepoužívám 12V, ale jen 9V trafo, může to být tím?

TomasP

Re:Arduino a DS18B20
« Odpověď #43 kdy: 08. 07. 2012, 22:46:31 »
Nejde mi edit (asi skrz registraci) tak to dám jako nový post - nevím proč, ale přestalo to fungovat i na tom druhém ventilátoru! Při analogWrite(1, 255) se oba točí naplno, při nižším tak Sunon píská a ten druhý NIC! Přičemž pokud se oba točí svítí diody L2 a L3 a pokud dám nižší, tak sunon píská a svítí pouze L2 a L3 nic...

Mara

Re:Arduino a DS18B20
« Odpověď #44 kdy: 05. 01. 2016, 15:00:53 »
Zdar klucí a omlouvám se za vytažení teto mrtvoly ;)
Umi v tom někdo?
Na první stránce tu dal TomasP  odkaz.
http://pastebin.com/h0e2tMsj

Tam to načita adresu čidel.

 for( i = 0; i < 8; i++) {
    Serial.write(' ');
    Serial.print(addr, HEX);
  }

Nechcí ji načitat s čidla ale zadavat natvrdo.
Vi někdo jak na to?

Něco podobného je tady
http://henrysbench.capnfatz.com/henrys-bench/ds18b20-arduino-user-manual-introduction-and-contents/ds18b20-arduino-users-manual-part-3-reading-a-single-temperature/ 

DeviceAddress tempSensor = {0x28, 0xFF, 0x2B, 0x45, 0x4C, 0x04, 0x00, 0x10};
Ale s knihovnou DallasTemperature.h je to strašně shnile: