Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino - tutorijali, pitanja, primjeri i projekti
(03-04-2022, 09:21 AM)progster Wrote: Miki, kad je stanje LO, obe diode i na katodi i na anodi imaju 0. Smile

(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 Smile
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? Smile
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 ...
Reply
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.
Reply
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
Reply
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);
}
}
}
Reply
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);
          }
    }
}
Reply
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;

}
}
}
Reply
Probam cim stignem sposla
Reply
Neradi.Probao sam jos najmanje desetak mogucnosti ali nevredi.Ovo
impuls+1 stavio sam sa bude +100
da bih brze video promenu ali nista.
Reply
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?
Reply
Miki pominjes kao moja plocica,ia imam uno a nano mi je zarobljen jer sam ga iskoristio za neki generator do 100mHz.
Reply
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
Reply
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
Reply


Forum Jump:


Users browsing this thread: 6 Guest(s)