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   15 / 851
(#) pepe1125 válasza ISF79 hozzászólására (») Dec 27, 2013 /
 
Az hülyeség lenne ha egymást követő byte-ot olvashatunk be két változóba? Aztán:
  1. if (incomingByte1=='o' && incomingByte2=='n') {
  2.  
  3.     ...
A hozzászólás módosítva: Dec 27, 2013
(#) icserny válasza pepe1125 hozzászólására (») Dec 27, 2013 / 1
 
Ez kézenfekvő megoldásnak tűnik, de lehet, hogy mindkét olvasás előtt ellenőrizni kell, hogy van-e beérkezett karakter.
(#) Koncsar hozzászólása Dec 27, 2013 /
 
Sziasztok! Tudnátok segíteni egy olyanban, hogy egy időzítő kapcsolási ill. NYÁKrajzot keresek ATMEGA328P-PU hoz. A 2009 ben működik de chippet átszeretném tenni egy külön NYÁKba. Előre is köszönöm az ötleteket.
(#) pepe1125 válasza Koncsar hozzászólására (») Dec 27, 2013 /
 
Én nem értem milyen időzítő kell... Meg miért ne lehetne egy nyákot tervezni? Mondjuk sprint layouttal össze lehet dobni pár perc alatt. Mi a feladat, mi a cél?
(#) Koncsar válasza pepe1125 hozzászólására (») Dec 27, 2013 /
 
Köszönöm válaszod! Használok Sprintet is. NYÁK levilágítohoz szeretnék összedobni egy időzítőt ami 1mp től akár 20 percig is pontosan számol. Egy gomb megnyomására elindul a progiban beírt idő, és miután leszámolt megáll és a FET gate lábáról vagy egy reléről eltünik a jel. Nem tudom mennyire írtam le érthetően. Ha esetleg egy ilyen kapcsolással tudsz segíteni kezdésnek megköszönöm.
(#) Koncsar válasza pepe1125 hozzászólására (») Dec 27, 2013 /
 
De a legjobb az lenne ha egy potit is be lehetne iktatni az állításhoz. Sajnos nem találtam megépített nyákokat az Atmegához még, vagy nagyon rosszul kerestem. LCD nem kell hozzá. Látni nem szeretnék itt semmi visszaszámlálást.
Tudsz segíteni?
A hozzászólás módosítva: Dec 27, 2013
(#) pepe1125 válasza Koncsar hozzászólására (») Dec 27, 2013 /
 
De csak jó lenne látni a beállított értéket valahogy nem? Vagy ha megvan a fix idő akkor egy pár soros programból megvan potméterrel együtt az időzítő.

De az 555 ös IC is alkalmas erre.

Timer link 1
Timer 2 link
Timer 3 link
(#) Koncsar válasza pepe1125 hozzászólására (») Dec 27, 2013 /
 
NE555 ből most építettem meg az időzítőt. De 5-10 percre már nem alkalmas, pontosság szempontjából. LCD-t nem szeretnék ehhez használni.
http://www.hobbielektronika.hu/forum/topic_post_1554213.html#1554213
A hozzászólás módosítva: Dec 27, 2013
(#) pepe1125 válasza Koncsar hozzászólására (») Dec 27, 2013 /
 
Na jólvan. Akkor mit csináljunk? Mert megfogod azt a mikrokontrollert, pár sorból kész az arduino-s program. Kell egy arduino, vagy egy programozó amivel belenyomod a hexa fájlt. A nyákot sprintbe megtervezed, a mikrokontroller kapjon stabil tápot egy 7805-ről, egy analóg bemenetére rá a poti, és kivalasztassz egy digit ki menetet, arra meg a FET. IRL tipusú FET az logikai, tehát 5V simán jó neki. És kész.
(#) Koncsar válasza pepe1125 hozzászólására (») Dec 27, 2013 /
 
Pepe ezt szeretem! Köszi. IRLZ44 FETem az van. 7805 -m is van. Arduino 2009 em is van és STK500 am is. Kéne Sprintben egy NYÁK terv, meg az a pársoros progi. Nem vagy fáradt hozzá?
NYÁKot csak vasalni tudok egyenlőre.
Megcsinálhatjuk azt is, hogy a progit ha van rá feltöltöm az Atmegára, a 2009 en kipróbálom, de utána egy külön nyák kéne nekem. Szeretnél segíteni? Megköszönöm. A TAVÍR os Robi tanfolyamát végig olvastam de félre kellett tenem egy kisidőre, sokat felejtettem, sokat kisérleteztem vele egy évvel ezelött.
A hozzászólás módosítva: Dec 27, 2013
(#) pepe1125 válasza Koncsar hozzászólására (») Dec 27, 2013 /
 
Na bakker. Én nem olvastam sajnos semmi irodalmat, autodidakta módon próbálom csinálni.

Akkor neked az arduino duemilanove lehet... Akkor nincs para, beteszed a szűz atmega 328at és az stk500 programozót rádugod... majd az arduino fejlesztőkörnyezetben a menüben kiválasztod a programozók közül az avr isp vagy mkII est. De majd kipróbálod melyiket fogadja el, hirtelen nemtudom. Aztán kiválasztod még az alappanelek közül azt ami neked van. Majd nyomsz egy bootloader beégetést. Ha ez megvan, akkor írjuk a programot és megy az új 328as kontrolleren is. Ha ez nem menne így, akkor majd a hexa fájlt égetjük bele.

Na a programot megpróbálom csinálni.
(#) Koncsar válasza pepe1125 hozzászólására (») Dec 27, 2013 /
 
Oké Pepe. Az Atmega nem szűz a bootloadere megvan, hogy az kimaradhat a körből. Azt hittem, hogy már vissza sem jösz. Nekem is kell egy 20 perc, u8tána vagyok szünet nélkül. Itt már csak rajtad múllik, hogy meddig bírod. AVR ben nem vagyok spiller. Mindjárt jövök.***

Ugye nem barátgyűjtőnek használod a fórumot?
-moderátor-
A hozzászólás módosítva: Dec 27, 2013
(#) pepe1125 válasza Koncsar hozzászólására (») Dec 27, 2013 /
 
Csak nem barátgyűjtő...

Csak próbálok segíteni. Viszont kellene tudni mennyi idő intervallum között működjön?!
(#) Koncsar válasza pepe1125 hozzászólására (») Dec 27, 2013 /
 
Szia! Újra itt. Akkor várom ötleteid. Ja, időhosszúságot kérdeztél. 1-30 perc közöttre gondoltam.
A hozzászólás módosítva: Dec 27, 2013
(#) pepe1125 válasza pepe1125 hozzászólására (») Dec 27, 2013 /
 
  1. int start=30; // Visszaszámlálás kezdete másodpercben
  2.  
  3. unsigned long time; // Aktuális idő milliszekundumokban
  4. const int kapcs =  13; // Kimenet amit kapcsolni szeretnél    
  5.  
  6. void setup() {                
  7.   pinMode(kapcs, OUTPUT);
  8.   Serial.begin(9600);
  9.   while (!Serial) ;  
  10. }
  11.  
  12. void loop() {
  13.  
  14.   if((millis()/1000) < start){
  15.     Serial.println(start -(millis()/1000));
  16.     digitalWrite(kapcs, HIGH);
  17.   }
  18.   else {
  19.     // Visszaszámlálás leteltével a sárga LED villog (PIN13)
  20.     time=millis();
  21.     while(millis() < time+200) { // 0,2  másodpercenként vált
  22.       digitalWrite(kapcs, LOW);
  23.       Serial.println(" OFF ");  
  24.     }
  25.     time=millis();    
  26.     while(millis() < time+200) { // 0,2  másodpercenként vált
  27.       digitalWrite(kapcs, HIGH);
  28.       Serial.println(" ON ");  
  29.     }
  30.   }  
  31. }



Próbáld ki ezt rátölteni a kontrollerre, majd ha kész, nyisd meg a soros port monitort és nézd...
(#) Koncsar válasza pepe1125 hozzászólására (») Dec 27, 2013 /
 
A programsort másolás, beillesztéssel nem tudom beírni mert feltőltésnél hibát ír.
(#) pepe1125 válasza Koncsar hozzászólására (») Dec 27, 2013 /
 
pedig másol beilleszt kellene... De üreset nyiss az Arduino felületén, ne legyen benne semmi.

Másol, beilleszt, és ha hiba van mit ír hibának?

Ki lett választva az Arduino Duemilanove?!
(#) Koncsar válasza pepe1125 hozzászólására (») Dec 27, 2013 / 1
 
A sorok elötti számok zavarják talán.

Arduino.png
    
(#) pepe1125 válasza Koncsar hozzászólására (») Dec 27, 2013 /
 
Persze!
A sorszámok nem kellenek, csakis a programkód. Úgy másold ki, hogy a sorszámok ne legyenek benne.
A hozzászólás módosítva: Dec 27, 2013
(#) Koncsar válasza pepe1125 hozzászólására (») Dec 27, 2013 /
 
Úgy nem tudom.
(#) Koncsar válasza pepe1125 hozzászólására (») Dec 27, 2013 / 1
 
Feltöltőttem, kivettem a sorszámokat az elejéről. Zoc terminál progit elindítottam és miután lefutotta 30 mp , utána már csak Off On felváltva fut.
A hozzászólás módosítva: Dec 27, 2013
(#) Koncsar válasza pepe1125 hozzászólására (») Dec 27, 2013 /
 
Illetve a digitális kimenet 13 pinen lévő LED villog.
(#) pepe1125 válasza Koncsar hozzászólására (») Dec 27, 2013 /
 
Na akkor tökéletes, kész az időzítőd!

A teljes programot megcsináltam, sorosporton monitorozható az esemény.

A0-ra kötsz egy lineáris potmétert, ami a +5V és a GND közé van bekötve és a középső kivezetése megy az A0 analóg bemenetre. Ezzel 1-30perc között állítható a visszaszámlálási idő.

A kimenet a Digitális kimenetek közül a 9-es lesz!

A Sárga LED világítása csak a működést mutatja, valamint az idő leteltével villog majd!

Bekötése a potméternek

A program:
  1. // Arduino NYÁK levilágító időzítő program v1.0
  2. // A tápfeszültség megjelenés pillanatában indul az időzítő!
  3. // RESET gomb felengedésével indítható a beállított idővel a visszaszámlálás.
  4.  
  5. unsigned int start = 0; // Visszaszámlálás kezdete másodpercben
  6. unsigned long time; // Aktuális idő milliszekundumokban
  7. const int LED = 13; // Sárga LED a működés visszajelzésére    
  8. const int poti = A0; // Poti az A0 analóg bemenetre az idő beállításhoz
  9. const int kimenet = 9; // Kapcsolt kimenet, ami az idő leteltével alacsony szintre vált
  10.  
  11. void setup() {                
  12.   pinMode(LED, OUTPUT);
  13.   pinMode(kimenet, OUTPUT);
  14.   pinMode(poti, INPUT);
  15.   Serial.begin(9600);
  16.   while (!Serial) ;  
  17.   start = map(analogRead(poti),0,1023,60,1800);  // Visszaszámlálási idő beállítása 1-30 perc között
  18.   Serial.println(start);  // A beállított érték kiírása a sorosportra
  19. }
  20.  
  21. void loop() {
  22.  
  23.   if((millis()/1000) < start){
  24.     Serial.println(start -(millis()/1000));
  25.     digitalWrite(LED, HIGH); // Sárga LED bekapcsolása jelzi a visszaszámlálás kezdetét!
  26.     digitalWrite(kimenet, HIGH); // Kimenetre +5V rákapcsolása (FET bekapcs)
  27.     }
  28.   else {
  29.     digitalWrite(kimenet, LOW); // A beállított idő leteltével a kimenet 0V-ra vált (FET kikapcs)
  30.     Serial.println(" Letel az ido! ");  
  31.    
  32.     // Visszaszámlálás leteltével a sárga LED villog (PIN13), jelzi a beállított idő leteltét
  33.     time=millis();
  34.     while(millis() < time+200) { // 0,2  másodpercenként vált
  35.       digitalWrite(LED, LOW);
  36.     }
  37.     time=millis();    
  38.     while(millis() < time+200) { // 0,2  másodpercenként vált
  39.       digitalWrite(LED, HIGH);
  40.     }
  41.   }  
  42. }


A hozzászólás módosítva: Dec 27, 2013
(#) Koncsar válasza pepe1125 hozzászólására (») Dec 27, 2013 / 1
 
Ok. Akkor most ezt az új progit cseréljem le az előzővel? Ideiglenesen a dig 9 pinre bekötök egy LEDet, hogy lássam, hogy működik e a dolog. Jól értelmezem?
A hozzászólás módosítva: Dec 27, 2013
(#) pepe1125 válasza Koncsar hozzászólására (») Dec 27, 2013 /
 
Igen, jól értelmezed. A pin9-es LED helyére megy majd a FET GATE kivezetése. Aztán a FET-re egy relé vagy amit csak akarsz kapcsolni...
Hogy ne kelljen a sorszámot kivenni itt a teljes program:

Idézet:
„// Arduino NYÁK levilágító időzítő program v1.0
// A tápfeszültség megjelenés pillanatában indul az időzítő!
// RESET gomb felengedésével indítható a beállított idővel a visszaszámlálás.

unsigned int start = 0; // Visszaszámlálás kezdete másodpercben
unsigned long time; // Aktuális idő milliszekundumokban
const int LED = 13; // Sárga LED a működés visszajelzésére
const int poti = A0; // Poti az A0 analóg bemenetre az idő beállításhoz
const int kimenet = 9; // Kapcsolt kimenet, ami az idő leteltével alacsony szintre vált

void setup() {
pinMode(LED, OUTPUT);
pinMode(kimenet, OUTPUT);
pinMode(poti, INPUT);
Serial.begin(9600);
while (!Serial) ;
start = map(analogRead(poti),0,1023,60,1800); // Visszaszámlálási idő beállítása 1-30 perc között
Serial.println(start); // A beállított érték kiírása a sorosportra
}

void loop() {

if((millis()/1000) < start){
Serial.println(start -(millis()/1000));
digitalWrite(LED, HIGH); // Sárga LED bekapcsolása jelzi a visszaszámlálás kezdetét!
digitalWrite(kimenet, HIGH); // Kimenetre +5V rákapcsolása (FET bekapcs)
}
else {
digitalWrite(kimenet, LOW); // A beállított idő leteltével a kimenet 0V-ra vált (FET kikapcs)
Serial.println(" Letel az ido! ");

// Visszaszámlálás leteltével a sárga LED villog (PIN13), jelzi a beállított idő leteltét
time=millis();
while(millis() < time+200) { // 0,2 másodpercenként vált
digitalWrite(LED, LOW);
}
time=millis();
while(millis() < time+200) { // 0,2 másodpercenként vált
digitalWrite(LED, HIGH);
}
}
}


Az idézetet és az idézőjeleket vedd azért ki!
A hozzászólás módosítva: Dec 27, 2013
(#) Koncsar válasza pepe1125 hozzászólására (») Dec 27, 2013 /
 
Na most jön a bonyodalmassabb rész. Úgye nem az Arduinot szeretném a levílágítóba betenni ezért majd szükségem lenne az Atmegára egy tervre, mert a lábkiosztás is fontos. Pláne ha Sprintbe megakarom rajzolni a NYÁKot. Neked ez mennyi időbe kerül? Itt még szeretném a segítséged kérni.
(#) Koncsar válasza pepe1125 hozzászólására (») Dec 27, 2013 /
 
Progit feltöltöttem, a poti milyen értékű legyen? Van 10K, 50K ohm os.
(#) pepe1125 válasza Koncsar hozzászólására (») Dec 27, 2013 /
 
De innen nagyon egyszerű a dolgod! Kiveszed az ATMEGA 328-at a helyéről, majd megnézed az adatlapját melyik kivezetésére kell kötni a tápfeszültséget, valamint a Quartz kristályt ha van... Majd egy multiméterrel szépen megméred az A0 PIN-t, hogy a kontroller melyik lábához megy, valamint a PIN9-est is. A RESET kivezetésre kell egy 10k-s felhúzó ellenállás ami a +5V-ra megy, és még a RESET kivezetésre én tennék egy kapcsolót is. Ezzel a kapcsolóval tudom indítani az időzítőt... Aztán a nyáktervet ennek megfelelően elkészíted.

Alig áll egy pár alkatrészből, menni fog!

1: 7805
2: Kondenzátorok a tápfeszre, (100nF és 100µF minimum)!
3: Az A0 bemenet és a földpont közé 100nF kondenzátor!
4: N típusú MOSFET a kimenetre (D9),
5: ATMEGA328 a kvarccal együtt, és a kvarcra 20pF körüli kondikat szokás tenni!!!
6: Potméter, ami mondjuk 10k lin.
A hozzászólás módosítva: Dec 27, 2013
(#) Koncsar válasza pepe1125 hozzászólására (») Dec 27, 2013 /
 
Az Atmega adatlapján nem találom a quarz bekötését, azt is mérjem vissza az AVRről? 16MHz kavics jó hozzá? Vagy mi a legjobb?
A hozzászólás módosítva: Dec 27, 2013
(#) pepe1125 hozzászólása Dec 27, 2013 /
 
Apró módosítást tettem bele:

A soros portot lezártam az időzítő visszaszámlálásával, de ez nálad nem jelent problémát. Esetleg ha mást is érdekel a program, akkor ez a jelenlegi végső verzió.

  1. // Arduino NYÁK levilágító időzítő program v1.0
  2. // A tápfeszültség megjelenés pillanatában indul az időzítő!
  3. // RESET gomb felengedésével indítható a beállított idővel a visszaszámlálás.
  4.  
  5. unsigned int start = 0; // Visszaszámlálás kezdete másodpercben
  6. unsigned long time; // Aktuális idő milliszekundumokban
  7. const int LED = 13; // Sárga LED a működés visszajelzésére    
  8. const int poti = A0; // Poti az A0 analóg bemenetre az idő beállításhoz
  9. const int kimenet = 9; // Kapcsolt kimenet, ami az idő leteltével alacsony szintre vált
  10.  
  11. void setup() {                
  12.   pinMode(LED, OUTPUT);
  13.   pinMode(kimenet, OUTPUT);
  14.   pinMode(poti, INPUT);
  15.   Serial.begin(9600);
  16.   while (!Serial) ;  
  17.   start = map(analogRead(poti),0,1023,60,1800);  // Visszaszámlálási idő beállítása 1-30 perc között
  18.   Serial.println(start);  // A beállított érték kiírása a sorosportra
  19. }
  20.  
  21. void loop() {
  22.  
  23.   if((millis()/1000) < start){
  24.     Serial.println(start -(millis()/1000));
  25.     digitalWrite(LED, HIGH); // Sárga LED bekapcsolása jelzi a visszaszámlálás kezdetét!
  26.     digitalWrite(kimenet, HIGH); // Kimenetre +5V rákapcsolása (FET bekapcs)
  27.     }
  28.   else {
  29.     digitalWrite(kimenet, LOW); // A beállított idő leteltével a kimenet 0V-ra vált (FET kikapcs)
  30.     Serial.println(" Letel az ido! ");
  31.     Serial.end();
  32.    
  33.     // Visszaszámlálás leteltével a sárga LED villog (PIN13), jelzi a beállított idő leteltét
  34.     time=millis();
  35.     while(millis() < time+200) { // 0,2  másodpercenként vált
  36.       digitalWrite(LED, LOW);
  37.     }
  38.     time=millis();    
  39.     while(millis() < time+200) { // 0,2  másodpercenként vált
  40.       digitalWrite(LED, HIGH);
  41.     }
  42.   }  
  43. }
Következő: »»   15 / 851
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