Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   304 / 863
(#) david10 válasza Kovidivi hozzászólására (») Dec 21, 2016 /
 
Köszönöm a válaszod!
Melyik regisztereket kell modositsam? A fusebit-eket kell állítani?
(#) mateatek válasza david10 hozzászólására (») Dec 21, 2016 /
 
16 bites timerrel:

TCCR1A = _BV(WGM11) | _BV(COM1A1);
TCCR1B = _BV(WGM13) | _BV(CS10) | _BV(WGM12);
ICR1 = 233; //Ez a frekvencia
OCR1A = 116; //ez a kitöltés

8 bites timerrel:

TCCR2A = _BV(WGM20) | _BV(COM2B1) | _BV(COM2B0) | _BV(WGM21);
TCCR2B = _BV(CS20) | _BV(WGM22);
OCR2A = 233; //freki
OCR2B = 116; //kitöltés
A hozzászólás módosítva: Dec 21, 2016
(#) david10 válasza mateatek hozzászólására (») Dec 21, 2016 /
 
Köszönöm, az Arduinohoz végül ezzel oldottam meg: Bővebben: Link
Amit küldtél, az müködne az ATtiny85-tel?
Mi a külömbség a 8 és 16 bites timer között?
(#) Kovidivi válasza david10 hozzászólására (») Dec 21, 2016 /
 
_BV(WGM11) helyett lehet használni a (1<<WGM11) -et, így nem kell ezt a makrót megkeresned.
(#) mateatek válasza david10 hozzászólására (») Dec 21, 2016 /
 
A 8 bites timerrel az 255 a legnagyobb osztás. 16 bitesnél értelem szerűen több, tehát finomabb lépés közökkel tudod állítani a frekvenciát.
Arra figyeljél, ha állítgatod a timereket, hogy ha nem muszáj, akkor a timer0-át ne tekergessed el, mert akkor állítódik vele a delay, a millis is.
(#) mateatek válasza david10 hozzászólására (») Dec 21, 2016 /
 
Működik ATtiny85-tel is, de abban csak 8 bites timer van. Tehát ennek megfelelően kell módosítani a regisztereket, és a biteket is.
(#) david10 válasza mateatek hozzászólására (») Dec 21, 2016 /
 
Számolgattam...
Az Attiny85 1mHz-es belső orajellel 8biten 66,66kHz-et vagy 71,42kHz-et ad le, ami nekem nem jó.
Külső 8mHz-es órajellel 68,37kHz-et tudok elérni, ami nekem tökéletes.
Ha a program nem kell egyeben tudjon a frekv. generáláson kivül, akkor használhatom a timer0-át is?
Egyébként ez egy CCFL inverterben meghalt vezérlő IC-t fog helyettesíteni fényerő szabályzás és egyéb védelmek nélkül.
(#) david10 válasza Kovidivi hozzászólására (») Dec 21, 2016 /
 
Köszönöm a javaslatodat!
(#) mateatek válasza david10 hozzászólására (») Dec 22, 2016 /
 
Idézet:
„Ha a program nem kell egyeben tudjon a frekv. generáláson kivül, akkor használhatom a timer0-át is?”

Használhatod a timer0-t Arduinonál is. Csak a timer0 976.5 Hz-es frekvenciájától függ a delay(), a micros(), a millis() függvény időzítése. És mivel ezeket sok más függvénykönyvtár is használhatja, így ezek is borulnak, illetve pontatlanná válnak.
Erre kell figyelni.
(#) janikukac hozzászólása Dec 22, 2016 /
 
Sziasztok!
Egy fontos és viszonylag sürgős segítségre lenne szükségem: Arduinoval szeretnék beégetni egy ATMega8A típusú vezérlőt. Múltkor (kb. fél éve) már beleraktam a kívánt programot, de "lassú" a mikrovezérlő, meg furcsán reagál. Amikor feltettem a kérdést itt a fórumon, mi okozhatja a gondot, azt mondták, ki kell kapcsolni a fusebiteknél a div8-at, és 8x gyorsabb lesz a vezérlő. Na, nekem ez annyi érthetőt rejt, mint kínainak az Anyám tyúkja, szóval kérném a segítségeteket. Tegnap próbáltam valahogy beégetni, de nem sikerült a kapcsolatot sem létrehoznom, stb. Viszont ami nagyobb gond volt, hogy nem tudom, majd hol keressem ezt a fusebit beállítást. A tutorial videót ha megtalálom az égetésről, akkor az valószínűleg nem lesz gond, viszont a beállításra nem találtam semmi hasznosat az interneten.
(#) david10 válasza mateatek hozzászólására (») Dec 22, 2016 /
 
Ehhez a forráskódhoz az OCR1C = 127; helyére mennyit kellene írjak?
A 255 mekkora frekvenciának felelne meg?
(#) mateatek válasza david10 hozzászólására (») Dec 22, 2016 /
 
Idézet:
„A 255 mekkora frekvenciának felelne meg?”


Előosztó nélkül az órajel osztva 255-tel. 31372Hz.
(#) david10 válasza mateatek hozzászólására (») Dec 22, 2016 /
 
Az nekem kevés.
Az előosztó mit jelent?

Szerk: Rájöttem... 117-et számoltam, kiprobálom.
A hozzászólás módosítva: Dec 22, 2016
(#) mateatek válasza david10 hozzászólására (») Dec 22, 2016 /
 
Idézet:
„Az előosztó mit jelent?”


A timer egy programozható osztón keresztül kapja az órajelet. Az előosztón. Viszonylag nagy lépésekben lehet vele leosztani. /8, /64, /256, /1024.
(#) david10 válasza mateatek hozzászólására (») Dec 24, 2016 /
 
Az miért van, hogy ha az alábbi kódban benne van a for és a delay, akkor müködik az inverter, de ha kiveszem, a for vagy a delay egyikét, akkor nem kapcsol be?

  1. const long timer1_OCR1A_Setting = F_CPU / 68000L; //8 MHz-es órajelnél egyenlő 117-tel.
  2. void setup()
  3.  {
  4.   pinMode (4, OUTPUT);  // chip pin 3  // OC1B - Timer 1 "B"
  5.   TCCR1 = bit (CS10);           // no prescaler
  6.   GTCCR = bit (COM1B1) | bit (PWM1B);  //  clear OC1B on compare
  7.   OCR1B = 134; //duty cycle
  8.  
  9.   for (int i; i<10 ; i++)  {        
  10.   OCR1C = timer1_OCR1A_Setting;     // frequency
  11.   delay(10000); //10 sec
  12.   }  
  13.   }
  14.  
  15. void loop() { }
(#) mateatek válasza david10 hozzászólására (») Dec 24, 2016 /
 
A for ciklus, és a delay szerintem tök fölösleges bele. Minek kell tízszer beállítani a frekvenciát?
A kitöltési tényezőt 134-re állítod, holott a frekvencia 117, így a kitöltési tényező maximum értéke is ennyi lehet. Ez így túlcsordul 117-nél, és 17-et fog eredményezni.
(#) david10 válasza mateatek hozzászólására (») Dec 24, 2016 /
 
A frekvenciát jobb beállítani 10-szer mint egyszer sem.
Közel 2 napja szerencsétlenkedek vele, errefel nekem leírod a megoldást 3 sorban... Köszönöm szépen!
Még egy annyi kérdésem volna, hogy ha 60%-os PWM-et akarok, akkor azt hogyan tudom kiszámítani, hogy az OCR1B-hez mit kell írjak?
(#) mateatek válasza david10 hozzászólására (») Dec 24, 2016 /
 
Ebben az esetben ugye a 0%-os kitöltési tényező az a 0. (Általában ez máskor is igaz). A 100%-os kitöltési tényező pedig a 117, azaz az OCR1C értéke. Kicsit matekolni kell. A 60%-os kitöltést nagyjából a 70-es érték fogja hozni. De ugye az is kiszámolható, hogy ez nem pont 60% lesz, hanem csak 59.82905982%.
(#) david10 válasza mateatek hozzászólására (») Dec 24, 2016 /
 
Köszönöm a segítségedet!
Ezekkel az értékekkel ugy müködik, mint ahogyan a nagy könyvben is le van írva:
  1. OCR1B = 70; //duty cycle
  2. OCR1C = timer1_OCR1A_Setting+5;                  // frequency

A képernyő fényes, az inverteren kb. 10 percnyi müködés után a két kicsike trafó langyosodik, de nem melegednek túl.
Köszönöm szépen a segítségedet! Boldog karácsonyt!
(#) mateatek válasza david10 hozzászólására (») Dec 24, 2016 /
 
Ebben az esetben az OCR1C=122, ami 65573 Hz, és így az CR1B 70-es értéke sem 60%-os kitöltés.
Persze, ettől függetlenül még lehet, hogy így jó.
(#) morzsa15 hozzászólása Dec 24, 2016 /
 
Sziasztok!

Arduinoval szeretnék 0-5V-ig feszültséget de nem add ki megfelelő értéket mi lehet vele a baj? Teljesen gyári program.

  1. /*
  2.   ReadAnalogVoltage
  3.   Reads an analog input on pin 0, converts it to voltage, and prints the result to the serial monitor.
  4.   Graphical representation is available using serial plotter (Tools > Serial Plotter menu)
  5.   Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.
  6.  
  7.   This example code is in the public domain.
  8. */
  9.  
  10. // the setup routine runs once when you press reset:
  11. void setup() {
  12.   // initialize serial communication at 9600 bits per second:
  13.   Serial.begin(9600);
  14. }
  15.  
  16. // the loop routine runs over and over again forever:
  17. void loop() {
  18.   // read the input on analog pin 0:
  19.   int sensorValue = analogRead(A0);
  20.   // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
  21.   float voltage = sensorValue * (5.0 / 1023.0);
  22.   // print out the value you read:
  23.   Serial.println(voltage);
  24. }


Segítséget előre is köszönöm!
Kellemes Ünnepeket!
(#) Kera_Will válasza morzsa15 hozzászólására (») Dec 24, 2016 /
 
Mihez képest nem jó?
Lehet átlagolni kéne a méréseket és azt megjeleníteni.
0 és 5 volton mit jelenít meg?
Ha megmutatnád mit ír ki ilyenkor a sorosmonitorra többet látnánk mi is.
Esetleg fél - 1 voltonkénti választ is le írhattad volna.(soros monitorra írt értékeket)
Akkor láthatnánk valami tendenciát, változást a mérési eredményekből.
Lehet a potid kontakt hibás ... bármi megeshet.
Amikor fixen áll valahol a poti akkor mi történik?
Rengeteg a hiányzó információ még.
A hozzászólás módosítva: Dec 24, 2016
(#) morzsa15 válasza Kera_Will hozzászólására (») Dec 24, 2016 /
 
Szia!

Most hogy így mondod tényleg elég hiányosan adtam meg.
Csak egy sima 4.2V li-ion cellát kötöttem rá a multiméter ennyit is mutat de a soros porton 4.71-4.74V-ig mutogatja és ha úgy beállítom hogy jó legyen a feszültség értéke és csökken akkor megint különbözik.

Például most mérem multiméter: 4.13V Arduino: 4.37V
A hozzászólás módosítva: Dec 24, 2016
(#) mateatek válasza morzsa15 hozzászólására (») Dec 24, 2016 /
 
Milyen tápról hajtod az Arduino-t? Annak a szűretlensége is nagyban befolyásolja a mérést.
(#) morzsa15 válasza mateatek hozzászólására (») Dec 24, 2016 /
 
Számítógép usb.
(#) mateatek válasza morzsa15 hozzászólására (») Dec 24, 2016 /
 
Ha az én PC-m USB-jén lévő 5 voltot veszem alapul, akkor az siralmas eredményt adhat.
Ilyenkor talán jobb eredményt kapnál, ha a saját 3.3 voltos referenciáját használnád, és egy csomó mérés eredményét átlagolnád.

  1. sensorValue = 0;
  2. for (int i; i<20 ; i++)  {
  3.   int sensorValue =  sensorValue + analogRead(A0);
  4.   }
  5. sensorValue = sensorValue / 20;
(#) Kovidivi válasza morzsa15 hozzászólására (») Dec 24, 2016 / 1
 
A kódban szerepel az 5-ös szám, ami a tápfeszültséf 5V-ját jelentené. Nálad valószínűleg nem 5.000V a tápod, ezért kapsz hibás eredményt. Én beállítanám a belső 1.1V-os referenciát, megmérném multival a pontos értékét, ezt a programba beírnám, majd feszültség osztóval leosztanám az akksi feszültségét akkorára, hogy maximum 1.0V-ot kapjak, így biztosan belefér az 1.1V-os tartományba. Az ellenállásokat ia ki lehet pontosan mérni, és a programban ezeket használni, vagy soros porton visszaírod a mért ADC értéket, multiméterről leolvasod az akksifeszültséget, majd kiszámolod a kettő közti aránszámot. Pontos lesz a végeredmény. Valaki írta, hogy a belső referencia nem pontos. Ez nem igaz. Valóban nem 1.100V, ettől van egy kis eltérése, viszont ha megméred hogy pontosan mennyi, ezt tartani fogja tápfeszültség és hőmérséklet változástól függetlenül, amennyira bírja.
(#) morzsa15 válasza Kovidivi hozzászólására (») Dec 24, 2016 /
 
Valóban ha meg mérem hogy mennyi is a belső "5v" feszültséget és a helyes értéket íróm be annak az 5-nek a helyére akkor rendben működik. Ez a belső referenciás dolog hogyan működik?
Arduino uno-t használok.
A hozzászólás módosítva: Dec 24, 2016
(#) Kovidivi válasza morzsa15 hozzászólására (») Dec 24, 2016 /
 
Van róla sok szép leírás, kicsit olvasgass utána. Hasznos dolog nagyon, én sokszor használom a belső 1.1V-ot.
(#) morzsa15 válasza Kovidivi hozzászólására (») Dec 24, 2016 /
 
De én úgy tudom hogy az csak arduino mega esetén van vagy rosszul tudom?
Következő: »»   304 / 863
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem