Neurochirurgie minim invazivă
"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv. Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice. www.neurohope.ro |
automatizare temporizare cu 2 x 555 sau?
Last Updated: Jul 25 2016 10:15, Started by
tiritrobo
, Jun 27 2016 10:18
·
0
#1
Posted 27 June 2016 - 10:18
Salutare tuturor!
Doresc o automatizare cu un monostabil cu durata de aclansare de 120 secunde care sa permita aclansarea unui al doilea astabil cu urmatorii timpi: 1. 5 aclansari cu durata de 16 secunde si pauza intre ele de 10 secunde 2. 3 aclansari cu durata de 32 de secunde si pauza dintre ele de 12 secunde 3. 15 aclansari cu durata de 4 secunde si pauza dintre ele de 4 secunde 4. 1 aclansare cu durata de 120 secunde. Ma poate ajuta cineva cu modul de cuplaj intre monostabil si astabil? Sau o varianta cu PIC sau Atmel? Multumesc anticipat. |
#2
Posted 27 June 2016 - 10:31
N-am înţeles exact, sunt mai multe cazuri diferite sau toate astabilele funcţionează deodată în paralel?
|
#3
Posted 27 June 2016 - 10:35
La actionarea monostabilului acesta va comanda astabilul cu acei timpi si pauze diferite selectabili printr-un comutator. Deci mai intai aleg tipul de tren de impulsuri apoi apasand un buton gen start pornesc monostabilul care va alimenta (comanda astabilul) timp de doua minute, cat dureaza trenul de impulsuri selectat. Daca se observa, indiferent de tipul de tren de impulsuri, durata finala de aclansare plus pauze este de 120 secunde la toate trenurile.
|
#4
Posted 27 June 2016 - 10:48
Analogic e greu de ajuns la precizia dorită, deşi se pot calcula valorile fără prea mare bătaie de cap.
Problema astabilului cu 555 este că la pornire timpul de încărcare a condensatorului de temporizare e mai ridicat, pt. că se încarcă de la zero apoi oscilează între 1/3 şi 2/3 din tensiunea de alimentare. deci nu se poate folosi în aplicaţia asta. Poate dacă ar funcţiona permanent şi controlezi cu o poartă comandată de monostabil dacă semnalul trece mai departe sau nu, dar nu ai sincronizare în cazul ăsta. Probabil cel mai simplu ar fi cu un sketch în Arduino, folosind funcţia (millis). Sau realizezi un numărător sau registru de deplasare cu 120 de etaje care primeşte tact la 1s iar ieşirile le cablezi cu diode, dar e cam stufos, e nevoie de multe piese, 12 integrate CD4017 plus zeci de diode. |
#5
Posted 27 June 2016 - 10:56
Cred ca ar fi mai fiabil cu microcontroller daca vrei precizie.
Daca folosesti E555 perioada setata din monostabil nu ai cum sa o sincronizezi perfect cu perioadele din astabil.O sa-ti ramana o direrenta in plus sau minus pe ultimele secunde si o sa ai in cazu asta inca o bucata de perioada a semnalului din astabil sau o trunchiere. Ar merge facut si cu TTL(monostabil, oscilator, numaratoare si decodificare) da iese destul de stufoasa schema. @mihai: n-am vz ca ai scris Edited by gabyxm, 27 June 2016 - 10:57. |
#6
Posted 27 June 2016 - 10:56
Cineva m-a ajutat cu o varianta cu attiny dar mi-am prins urechile la partea practica (schema electrica):
/* Attiny85 */ #include <avr/io.h> const int panouPin = A3; // Attiny85: pin 2 const int outputPin = 4; // Attiny85: pin 3 boolean Armare = false; void setup(){ pinMode(outputPin,OUTPUT); delay(1000); } void loop(){ raid(analogRead(panouPin)); } void raid(int Button){ int mod_functionare = 0; // selectie mod if (Button >= 250){mod_functionare=1;} if (Button >= 500){mod_functionare=2;} if (Button >= 750){mod_functionare=3;} if (Button >= 1000){mod_functionare=4;} if (mod_functionare < 1) {Armare=false;} //resetare if (Armare == true) {return ;} switch(mod_functionare){ case 1: //ALARMA LA DEZASTRE for (int i=0; i<5;i++){ digitalWrite(outputPin,HIGH); myDelay((16*1000)); digitalWrite(outputPin,LOW); myDelay((10*1000)); } Armare = true; break; case 2: //PREALARMA AERIANA for (int i=0; i<3;i++){ digitalWrite(outputPin,HIGH); myDelay((32*1000)); digitalWrite(outputPin,LOW); myDelay((12*1000)); } Armare = true; break; case 3: //ALARMA AERIANA for (int i=0; i<15;i++){ digitalWrite(outputPin,HIGH); myDelay((4*1000)); digitalWrite(outputPin,LOW); myDelay((4*1000)); } Armare = true; break; case 4: // INCETARE ALARMA digitalWrite(outputPin,HIGH); myDelay((120*1000)); digitalWrite(outputPin,LOW); Armare = true; break; }//end switch } void myDelay(int milis){ int flagStop; for (int i=0; i<milis; i++){ delay(1); flagStop = analogRead(panouPin); if (flagStop < 200) {break;} } } |
#7
Posted 27 June 2016 - 11:03
Păi e e aşa greu? faci un divizor rezistiv cu 3 rezistenţe şi selectezi de pe ele semnalul pt. Tiny, pinul 2, restul e rezolvat, ai ieşirea dorită pe 3.
|
#8
Posted 27 June 2016 - 11:06
1. Folosesc butoane pushbutton cu revenire sau cu retinere?
2. Pinul ce citeste valoarea rezistorilor este pinul fizic 3? 3. Pinul de iesire releu este pinul fizic 2? 4. La instructiunea const int panouPin = A3; // Attiny85: pin 2 const int outputPin = 4; // Attiny85: pin 3 nu trebuia const int panouPin = A3; // Attiny85: pin 2 const int outputPin = A4; // Attiny85: pin 3 ? 5. Cum calculez valorile rezistorilor? Cu ADC egal cu Vin*1024/Vref? Va rog, un desen, daca se poate. |
#9
Posted 27 June 2016 - 11:12
Se poate si cu 555 dar, este nevoie de un comutator mai complex.
|
#10
Posted 27 June 2016 - 11:14
Selector rotativ sau liniar cu 5 poziţii sau butoane gen claviatură, cu intercondiţionare, ca să nu poţi apăsa 2 butoane simultan.
A4 este o intrare analogică, care trece prin ADC, cealaltă este un pin digital de uz general, de aceea nu are A-ul în faţă. Divizorul trebuie calculat cum ai zis, 1023 e valoarea maximă. De fapt e nevoie de 4 rezistenţe în divizor, valorile aşa ochiometric ar trebui să fie ceva de genul R, R, R, 1,1R, luat de sus în jos. R poate lua valori de genul 10k, de ex, eci ai avea 10k, 10k, 10k, 11k. Edited by mihaicozac, 27 June 2016 - 11:40. |
|
#11
Posted 27 June 2016 - 11:53
mihaicozac, on 27 iunie 2016 - 11:14, said:
Selector rotativ sau liniar cu 5 poziţii sau butoane gen claviatură, cu intercondiţionare, ca să nu poţi apăsa 2 butoane simultan. A4 este o intrare analogică, care trece prin ADC, cealaltă este un pin digital de uz general, de aceea nu are A-ul în faţă. Divizorul trebuie calculat cum ai zis, 1023 e valoarea maximă. De fapt e nevoie de 4 rezistenţe în divizor, valorile aşa ochiometric ar trebui să fie ceva de genul R, R, R, 1,1R, luat de sus în jos. R poate lua valori de genul 10k, de ex, eci ai avea 10k, 10k, 10k, 11k. Still i don't get it. Se poate o schema (ma refer la aplicatia cu Attiny)? |
#13
Posted 27 June 2016 - 13:11
#14
Posted 27 June 2016 - 13:20
Aproximativ corect, doar că tranzistorul de ieşire ar trebui conectat cu emitorul direct la masă, iar releul legat în colector, astfel poţi folosi altă tensiune pt. releu, de ex. 12V.
Edited by mihaicozac, 27 June 2016 - 13:20. |
#15
Posted 27 June 2016 - 13:42
mihaicozac, on 27 iunie 2016 - 13:20, said:
Aproximativ corect, doar că tranzistorul de ieşire ar trebui conectat cu emitorul direct la masă, iar releul legat în colector, astfel poţi folosi altă tensiune pt. releu, de ex. 12V. Da, fireste, o sa pun un BC107 sau ceva similar cu dioda antiparalela pe bobina releului si sper sa mai si mearga. Cum fac protectia EPM? In caz de trasnete sau alte alea? |I |
|
#16
Posted 27 June 2016 - 14:01
Transil, tvs, etc. Teoretic montajul e separat de circuitele exterioare, dar o protecţie în plus nu strică. De aceea şi integratul ar trebui montat pe soclu, dacă se distruge programezi repede altul şi îl înlocuieşti.
|
#17
Posted 28 June 2016 - 07:11
Multumesc frumos pentru tot!
Va tin la curent cu progresul lucrarii. |
#18
Posted 19 July 2016 - 09:22
Am incarcat hex-ul aferent schitei in Attiny85 cu Khazama AVR, deoarece eXtreme AVR burner nu suporta Attiny85 prin interfata USBASP si un breadboard. Bine, si Khazama dadea eroarea legata de clock dar am inteles ca nu este importanta. Am verificat flash0ul, totul OK. Boon. Cu toate acestea, realizand si montajul fizic al aplicatiei, am constatat ca nu functioneaza. Sa fie fusebits setati gresit?
Am aici si un printscreen al fusebits-ilor de dupa programare. Unde gresesc? Attached FilesEdited by tiritrobo, 19 July 2016 - 09:25. |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users