Buddy1 Postat Septembrie 3, 2012 Partajează Postat Septembrie 3, 2012 da, doar ca eu caut o schema deja data care are si un cod functionalfiind incepator nu ma bag sa creez eu codul,caut ceva gata facut :cry: Link spre comentariu
Buddy1 Postat Septembrie 3, 2012 Partajează Postat Septembrie 3, 2012 chiar nimeni nu a mai facut ceva asemanator cu ce vreau eu? Link spre comentariu
ratza Postat Septembrie 3, 2012 Partajează Postat Septembrie 3, 2012 De curiozitate, te-ai uitat să vezi unde duce linkul? E prea mult scris şi prea puţine poze? Link spre comentariu
Buddy1 Postat Septembrie 3, 2012 Partajează Postat Septembrie 3, 2012 da m-am uitat este exct ce am zisse prezinta "constructia" codului dupa ce s-a ales schema dorita, ceea ce eu nu stiu sa fac inca Link spre comentariu
INCEPATOR21 Postat Septembrie 11, 2012 Partajează Postat Septembrie 11, 2012 Buna ziua,am citit cred ca toate discutiile despre timere, in spcial timer o si tot nu am reusit sa realizez ce imi propun.Vreau sa masor cu timer0 o durata de timp in care un semnal la intrarea in t1(timerul pe 16 biti) trece o singura data din 1 logic in 0 logic sa zicem.ar insemna ca timer 1 are valoarea 1, adica a facut o singura numarare pt ca semnalul se va modifica o singura data.fara sa pun nici un semnal la t1 sau si daca pun tot repeta aceleasi valori pe lcd $regfile = "m8535.dat"$crystal = 8000000'----------Config Lcd = 16 * 2Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portb.2 , Db6 = Portb.5 , Db7 = Portb.0 , E = Portd.7 , Rs = Portc.4Cursor OffDeclare Sub Displays Dim Timercounter As Byte Dim Count1 As Byte'-----------Config Timer1 = Counter , Edge = RisingDdrb.1 = 0Portb.1 = 1Config Porta = Output'-------Config Timer0 = Timer , Prescale = 1024'---------------Enable Timer1Enable Timer0Enable InterruptsDim A As Long , B As Byte , I As LongTimercounter = 0Count1 = 0ClsLocate 1 , 1Lcd "TEST"Locate 2 , 1Lcd "COMM ITC"Wait 5ClsCount1 = Timer1Start Timer0If Count1 = 1 ThenCall DisplaysEnd If'--------------Displays:Stop Timer0ClsHomeTimercounter = Timer0Lcd "durata:"Locate 2 , 1Lcd Timercounter ; " s" Start Timer0 ReturnVa rog mult daca poate cineva sa mi spuna unde gresesc. Link spre comentariu
Vizitator AEMelectronic Postat Septembrie 12, 2012 Partajează Postat Septembrie 12, 2012 buna searacine ma poate ajuta cu o schema pt o telecomanda cu 3-4 canale(telecomanda radio)si un receptor ?vreau in momentul in care armez un buton pe telecomanda sa porneasca un motor iar cand decuplez butonul sa se decupleze si motorular fi minunat daca ambele ar folosi ATmega8eu am gasit pe net dar am gasit cu PIC iar ce am gasit cu ATmega8 nu ma prea este ceea ce imi trebuie mie Link spre comentariu
Vizitator mihai_atanasiu Postat Octombrie 8, 2012 Partajează Postat Octombrie 8, 2012 Buna seara, incerc sa fac un fel de ciclo computer dintr-un Arduino uno; am citit pe net si am vazut ca cea mai sigura solutie este folosirea intreruperilor; pentru inceput mi-am propus sa fac partea cu numararea rotatiilor pe baza unui releu reed; pentru simplificare am folosit in loc de reed un micro intrerupator conectat la pinul 2 digital; un program simplu ar fi: unsigned long wheelRotations = 0; void setup() { Serial.begin(9600); attachInterrupt(0, wheelISR, CHANGE); } void wheelISR() { wheelRotations++; Serial.println(wheelRotations); } Teoretic acest scurt program ar trebui sa scrie la portul serial nr de rotatii; prin apasarea butonului se apeleaza functia wheelISR(). Problema este ca mi se pare ca nu functioneaza corect; variabila wheelRotations se incrementeaza incorect. Daca apas repetitiv pe buton cu o cadenta fixa de 10 ori in mod normal variabila wheelRotations ar trebui sa ajunga la valoarea 10; dar citeodata la o apasare a butonului se incrementeaza de 2-3 ori; deci in loc de 1,2,3,4,5,6,7,8,9,10 apare asa: 1,2,3,6,9,10,11,13....... am gresit ceva in cod ? M-am uitat si la functia attachInterrupt() sa vad daca pot inlocui evenimentul CHANGE cu RISING sau FALLING dar comportamentul este similar. Stie cineva care ar fi problema ? Link spre comentariu
Liviu M Postat Octombrie 8, 2012 Partajează Postat Octombrie 8, 2012 Citeste despre (soft) debouncing.Butoanele nu-s perfecte, asa ca la orie apasare oscileaza si genereaza mai multe pulsuri. Link spre comentariu
Vizitator mihai_atanasiu Postat Octombrie 8, 2012 Partajează Postat Octombrie 8, 2012 Citeste despre (soft) debouncing.Butoanele nu-s perfecte, asa ca la orie apasare oscileaza si genereaza mai multe pulsuri.M-am gindit ca la o apasare de buton se pot produce mai multe "apasari"; ca sa verific am conectat si un releu reed si se comporta la fel sau aproape asemanator; Link spre comentariu
Vizitator Postat Octombrie 8, 2012 Partajează Postat Octombrie 8, 2012 La orice contact mecanic, inclusiv la relee reed, apar vibraţii mecanice pe o durată de ordinul milisecundelor. În perioada vibraţiilor mecanice apar multe impulsuri electrice foarte scurte. Microcontrolerul, fiind foarte rapid, le percepe ca pe un şir de apăsări repetate. Ca să scapi de problema asta, cum ţi-a mai spus şi Liviu M, Citeste despre (soft) debouncing. Link spre comentariu
Vizitator mihai_atanasiu Postat Octombrie 9, 2012 Partajează Postat Octombrie 9, 2012 am citit despre debouncing; mai sigura mi se pare varianta hardware; am gasit un exemplu de soft debouncing si l-am testat; functioneaza pentru 200ms; problema este ca la mine este posibil sa am o frecventa putin mai mare de 5hz si atunci se pierd informatii.Pentru moment o sa folosesc varianta soft; multumesc pt raspunsuri; Link spre comentariu
ratza Postat Octombrie 9, 2012 Partajează Postat Octombrie 9, 2012 Încearcă cu un condensator peste contactele întrerupătorului. Link spre comentariu
Vizitator mihai_atanasiu Postat Octombrie 9, 2012 Partajează Postat Octombrie 9, 2012 ratza, tocmai asta vroiam sa scriu; multumes pt sugestie; am pus un condensator de 100 nF si acum functioneaza corect; nu mai "tremura" micro intrerupatorul; functioneaza si cu releul reed; citisem de aseara ca varianta cu condensator este cea mai sigura; acum o sa va spun si ce fac: un ciclo computer pentru o bicicleta electrica care pe linga informatiile legate de distanta si viteza va colecta si informatii electrice de la baterie prin intermediul unui senzor de curent si tensiune. Produsul exista de cumparat (http://www.ebikes.ca/drainbrain.shtml), am deja unul la bicicleta dar m-a prins "flama" ca as putea sa concep si eu unul. Voi vedea cit de departe pot sa merg; Cind o sa am o varianta cit de cit acceptabila o sa dau mai multe detalii. Link spre comentariu
nico_2010 Postat Octombrie 10, 2012 Partajează Postat Octombrie 10, 2012 @INCEPATOR21: Mai jos ai programul modificat pentru a indeplini cerintele tale. Nu am insistat prea m ult pentru perierea programului, asta o poti face si tu, in cazul in care mai intampini unele "lipsuri de finete". Ca o observatie: afisorul pare a fi conectat cam dezlanat, de obicei este conectat la pinii aceluiasi port. $regfile = "m8535.dat"$crystal = 8000000'----------Config Lcd = 16 * 2Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portb.2 , Db6 = Portb.5 , Db7 = Portb.0 , E = Portd.7 , Rs = Portc.4Cursor OffDeclare Sub DisplaysDim Timercounter As ByteDim Count1 As Byte , Flag As Bit'-----------Config Timer1 = Counter , Edge = RisingDdrb.1 = 0Portb.1 = 1Config Porta = Output'-------Config Timer0 = Timer , Prescale = 256 ' Prescalerul a fost modificat de mine pentru simularea bunei functionari a programului'--------------- ' Atentie! Chiar cu valoarea de 1024 nu vei obtine o masuratoare in unitati de secunda.Enable Timer1Enable Timer0Enable InterruptsDim A As Long , B As Byte , I As LongTimercounter = 0Count1 = 0Timer1 = 0Timer0 = 0ClsDoFlag = 1Count1 = Timer1Start Timer0If Count1 = 1 Then Call DisplaysIf Flag = 1 Then Gosub Static_msgLoop'--------------Displays:Stop Timer0ClsHomeTimercounter = Timer0ClsLcd "durata:"Locate 2 , 1Lcd Timercounter ; " s"Timer1 = 0Flag = 0Start Timer0ReturnStatic_msg:HomeLocate 1 , 1Lcd "TEST"Locate 2 , 1Lcd "COMM ITC"Flag = 1Return Link spre comentariu
keenox Postat Noiembrie 3, 2012 Partajează Postat Noiembrie 3, 2012 da, doar ca eu caut o schema deja data care are si un cod functionalfiind incepator nu ma bag sa creez eu codul,caut ceva gata facut :cry:Vezi aici (http://cs.curs.pub.ro/wiki/pm/prj2012/mdobre/pwm_fan_controller). E un proiect facut de mine pentru facultate. Poti sa iei numai partea de masurare a temperaturii, care e foarte simpla. Gasesti scheme, cod si pcb=uri acolo. Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum