Posts: 8.726
Threads: 138
Joined: Apr 2013
Reputation:
3.629
03-04-2022, 08:29 PM
(This post was last modified: 03-04-2022, 09:32 PM by mikikg.)
(03-04-2022, 09:21 AM)progster Wrote: Miki, kad je stanje LO, obe diode i na katodi i na anodi imaju 0.
(03-04-2022, 09:29 AM)mikikg Wrote: Da, izvinjavam se, treba da ide ne na GND nego na VCC/2, na 2.5V preko razdelnika.
Ovo je malo specifična caka, to mi je Macola predložio za neke druge stvari, naime u pitanju je vreme isključivanja diode, LED slično kao i žarulje ne isklučuju se momentalno kada nestane struje već posle nekog vremena, kod žarulje se ugasi nakon 1-2-3 sekunde, kod LED slično samo sa kraćim vremenima ali nije momentalno i tu se koristi ova varijanta da se "upumpa" negativni napon koji dovodi do bržeg pražnjenja internog naboja LED kako bi se tehnički svetlost pre ugasila (za neke hi-speed opto-coupler / laser potrebe).
PS: Da vidite malo kako najobičnija LED, one stare od 5mm crvene kako rade na 10-20MBaud preko "silka za pecanje" i foto-tranzistora sa izolacijom od 10-20-50+kV
Za još veće brzine i još veća rastojanja se ide na laserske diode + fiber optički kabal za naprimer 1 Milion Volti galvanske izolacije.
PS2: "Custom Hi-speed 10+MBit, 10+kV opto-coupler", LED+silk+PhotoNPN u termo-skupljajućem bužiru?
PS3: Siguran sam da postoje negde i nekome su dostupne SiC i GaN LED koje nemaju "repove" i "reverse recovery", samo za sad nama to nije dostupno ...
Posts: 2.475
Threads: 84
Joined: Feb 2013
Reputation:
1.438
Citam malo po netu oko pullup otpornika koji se nalaze u ATmega32u4 i koliko vidim preporucljivo ih je ne koristit (unutarnje) nego staviti 180R izmedju VCC(+5V) i pina koji je definiran kao INPUT..pa me zanimaju iskustva sa terena dali su pouzdani ovi interni pullup otpornici ili ne (da ne daju false triggering).
Imam rotary encoder koji ima tri pina spojena na svaki pin ATmega32u4 (LEFT/RIGHT i BUTTON), te REED SW(senzor kada je otvorena ladica ili ne), koje sam definirao kao ulazne pinove i ukljucio internet pullup otpornike, sve mi funkcionira na breadboardu bez ikakve greske, pa me zanima koje su prednosti a koje mane.
Posts: 967
Threads: 21
Joined: Apr 2015
Reputation:
888
03-07-2022, 12:05 AM
(This post was last modified: 03-07-2022, 12:06 AM by ddanijel.)
Na internetu se moze svasta procitati, na tebi je da isfiltriras date informacije na osnovu nekih ranijih iskustava i zdrave logike. Ovde logika kaze da nema logike ne koristiti interne pullup. Zasto ne bi bilo preporucljivo kada ih je proizvodjac vec predvideo interno u mcu? Druga logika kaze da posto ti to radi na protoboardu, nema razloga da sumnjas i komplikujes sebi dalje i uopste oko externih pullup.
I samo jos da prokomentarisem da je 180R premali otpor za tako nesto, struja protoka na 5v je oko 27mA (kada je spojeno prema gnd) i ako nista drugo disipirao bi na njemu u tom momentu 0.14w toplote .
Previse energije i mozganja ulazes u prost osvetljivac, napakuj to kako si zamislio i idi na sledeci projekat.
Linux is like a wigwam NO Windows NO Gates and an Apache inside
Posts: 392
Threads: 51
Joined: May 2014
Reputation:
32
Malopre sam greskom postavio pitanje u drugoj temi,izvinjavam se,ko breise neka brise prethonu poruku.
Ajde da ponovo pitam nesto.Probao sam da na tasterima napravim da menjam duty na arduino,to sam vec pravio sa potenciometrom koristeci ADC i radi najnormalnije a sad na isti nacin samo sto bi tasteri menjali vrednost OCR1A nece da radi,idnosno ima fiksni duty koji se nemenja na pritisak tastera a posle par minuta duty se smanji i ostane samo linija na osciloskopu.Evo kako sam probao:
//MOD 8 PHASE AND FREQENCY CORRECT PWM
int taster1 = 2;
int taster2 = 3;
int impuls;
void setup(){
DDRB |= (1<<PB1)|(1<<PB2);
TCCR1A = 0;
TCCR1A = 0;
TCCR1A = (1<<COM1A1) + (1<<COM1B1);
TCCR1B = (1<<WGM13) + (1<<CS10);
impuls = 500; //pocetna vrednost
ICR1 = 2000; //perioda
OCR1A = impuls;
pinMode(taster1,INPUT);
pinMode(taster2,INPUT);
}
void loop() {
PORTB |= (1<<PB1)|(1<<PB2);
OCR1A = impuls;
if(digitalRead(taster1)==LOW){
ICR1 = 2000;
OCR1A = impuls;
impuls=impuls+1;
delay(300);
if(impuls>1000){
impuls=1000;
PORTB |= (1<<PB1)|(1<<PB2);
}
}
if(digitalRead(taster2)==LOW){
ICR1 = 2000;
OCR1A = impuls;
impuls=impuls-1;
delay(300);
if(impuls<1){
impuls=1;
PORTB |= (1<<PB1)|(1<<PB2);
}
}
}
Posts: 665
Threads: 40
Joined: Jul 2015
Reputation:
398
Onako na brzaka koliko vidim PORTB ti se menja samu kad je uslof IF ispunjen. Mislim da to treba da ide izvan IF petlje da bi svaki pritisak na taster shiftovo bitove...
Ovako pocetna vrednost za impuls=500 i da bi dosegla 1000 ili 0 moras 500 puta da pritisnes taster ili levo ili desno...
A inace kad dajes deo programskog koda onda je pozeljno da ga stvis u tagove
Code: //MOD 8 PHASE AND FREQENCY CORRECT PWM
int taster1 = 2;
int taster2 = 3;
int impuls;
void setup(){
DDRB |= (1<<PB1)|(1<<PB2);
TCCR1A = 0;
TCCR1A = 0;
TCCR1A = (1<<COM1A1) + (1<<COM1B1);
TCCR1B = (1<<WGM13) + (1<<CS10);
impuls = 500; //pocetna vrednost
ICR1 = 2000; //perioda
OCR1A = impuls;
pinMode(taster1,INPUT);
pinMode(taster2,INPUT);
}
void loop() {
PORTB |= (1<<PB1)|(1<<PB2);
OCR1A = impuls;
if(digitalRead(taster1)==LOW){
ICR1 = 2000;
OCR1A = impuls;
impuls=impuls+1;
delay(300);
if(impuls>1000){
impuls=1000;
PORTB |= (1<<PB1)|(1<<PB2);
}
}
if(digitalRead(taster2)==LOW){
ICR1 = 2000;
OCR1A = impuls;
impuls=impuls-1;
delay(300);
if(impuls<1){
impuls=1;
PORTB |= (1<<PB1)|(1<<PB2);
}
}
}
Posts: 1.157
Threads: 27
Joined: Oct 2014
Reputation:
313
Probaj ovako:
Code: void loop() {
if(digitalRead(taster1)==LOW){
ICR1 = 2000;
OCR1A = impuls;
impuls=impuls+1;
delay(300);
if(impuls>1000){
impuls=1000;
}
}
if(digitalRead(taster2)==LOW){
ICR1 = 2000;
OCR1A = impuls;
impuls=impuls-1;
delay(300);
if(impuls<1){
impuls=1;
}
}
}
Posts: 392
Threads: 51
Joined: May 2014
Reputation:
32
Probam cim stignem sposla
Posts: 392
Threads: 51
Joined: May 2014
Reputation:
32
Neradi.Probao sam jos najmanje desetak mogucnosti ali nevredi.Ovo
impuls+1 stavio sam sa bude +100
da bih brze video promenu ali nista.
Posts: 8.726
Threads: 138
Joined: Apr 2013
Reputation:
3.629
Usput oko PWM i Arduino da pitam, treba mi za neki studenski projekat, koristi se Arduino Nano i treba mi JEDAN PWM izlaz ali da ima i komplementarni signal, dakle OUT i NOT_OUT ako je moguće da bude na HW nivou, da ne stavljam dodatne invertere na izlaz, gura se Si8233 (i to baš tvoja pločica Milane! : ) pa mi treba posebno Signal+Invertovani signal.
Kako to odraditi na Arduino nano (kroz Arduino IDE), koje tačno pinove/kako iskoristiti i podesiti?
Posts: 392
Threads: 51
Joined: May 2014
Reputation:
32
Miki pominjes kao moja plocica,ia imam uno a nano mi je zarobljen jer sam ga iskoristio za neki generator do 100mHz.
Posts: 8.726
Threads: 138
Joined: Apr 2013
Reputation:
3.629
Izvini moja greška, mislio sam na @Milan94 i ovu temu/pločicu, CNC motalica za transformatore, iskoristio sam taj drajver i kačim na Arduino Nano:
https://forum.yu3ma.net/thread-978-post-...l#pid71205
Posts: 967
Threads: 21
Joined: Apr 2015
Reputation:
888
pogledaj ovo, pisao sam pre 7 godina na ovu temu, pa bi trebalo da je to to sto tebi treba posto su u kontra fazi i nezavisno podesivi pwm na oba.
https://forum.yu3ma.net/showthread.php?t...&pid=40987
Linux is like a wigwam NO Windows NO Gates and an Apache inside
|