Förstärka signal på 3.5 v till 5v
Förstärka signal på 3.5 v till 5v
hejsan
jag undrar hur man enklast förstärker en signal på ca 3.5 v till 5?
transistor är ju ett altenativ, men finns det fler...
håller på med min stackars ledsnurra och ska försöka lära mig lite och inte bara koppla blint efter vad andra säjer...
jag tycker att det gått ganska okej hitils, men det är det att jag har en signal från en läsgaffel, och den vill inte komma över 3.5 volt så porten reagerar aldrig i atmegan...
aja, skulle vara tacksam för hjälp
jag undrar hur man enklast förstärker en signal på ca 3.5 v till 5?
transistor är ju ett altenativ, men finns det fler...
håller på med min stackars ledsnurra och ska försöka lära mig lite och inte bara koppla blint efter vad andra säjer...
jag tycker att det gått ganska okej hitils, men det är det att jag har en signal från en läsgaffel, och den vill inte komma över 3.5 volt så porten reagerar aldrig i atmegan...
aja, skulle vara tacksam för hjälp
Kod: Markera allt
int main()
{
DDRC = _BV(PC0) | _BV(PC1) | _BV(PC2) | _BV(PC3)| _BV(PC4)| _BV(PC5)| _BV(PC6)| _BV(PC7)| _BV(PA5);
DDRC &= ~ _BV(PA2);
if (PINA & _BV(PA2))
{
PORTB |= _BV(PC0);
PORTB |= _BV(PC1);
PORTB |= _BV(PC2);
PORTB |= _BV(PC3);
PORTB |= _BV(PC4);
PORTB |= _BV(PC5);
PORTB |= _BV(PC6);
PORTB |= _BV(PC7);
}
}

Kod: Markera allt
int main()
{
DDRC = _BV(PC0) | _BV(PC1) | _BV(PC2) | _BV(PC3)| _BV(PC4)| _BV(PC5)| _BV(PC6);
DDRA = _BV(PC7) | _BV(PA5);
DDRA &= ~ _BV(PA2);
if (PINA & _BV(PA2))
{
PORTB |= _BV(PC0);
PORTB |= _BV(PC1);
PORTB |= _BV(PC2);
PORTB |= _BV(PC3);
PORTB |= _BV(PC4);
PORTB |= _BV(PC5);
PORTB |= _BV(PC6);
PORTB |= _BV(PC7);
}
}

Kod: Markera allt
int main()
{
int i;
DDRC = _BV(PC0) | _BV(PC1) | _BV(PC2) | _BV(PC3)| _BV(PC4)| _BV(PC5)| _BV(PC6)| _BV(PC7);
DDRA = _BV(PA5);
DDRA &= ~ _BV(PA2);
for(i;i<200;i++)
{
if (PINA & _BV(PA2))
{
PORTB |= _BV(PC0);
PORTB |= _BV(PC1);
PORTB |= _BV(PC2);
PORTB |= _BV(PC3);
PORTB |= _BV(PC4);
PORTB |= _BV(PC5);
PORTB |= _BV(PC6);
PORTB |= _BV(PC7);
_delay_loop_2(10000);
}
}
}
varför jag la de direkt i main bara?
jo, det va så att jag va bara sugen på att se ifall det funkade, och det va de enklaste sättet, lös lysdioderna efter de att jag programerat den så funkade och om de inte gjorde de så funkade de inte, vilket det tyvärr inte gör...
kan tillägga att när jag ändrat lite nu och mätt upp, så är emitterspänningen på 5.5 v istället för 3.5...[/code]
Nu har du ju en massa PC i dina PORTB-rader igen. Du ska aldrig blanda C och B, även om det fungerar ibland. Dessutom råder jag dig starkt att försöka lära dig bitoperationer ordentligt. Det kanske kan vara lite krångligt i början, men du kommer ha stor nytta av att kunna det.
Din kod ska med största sannolikhet se ut så här:
> kan tillägga att när jag ändrat lite nu och mätt upp, så är emitterspänningen på 5.5 v istället för 3.5...
Vad för emitterspänning? Vilken spänning matar du AVR:en med? 5.5V låter lite farligt.
Din kod ska med största sannolikhet se ut så här:
Kod: Markera allt
int main()
{
DDRC = 0xFF; // Att sätta samtliga åtta bitar är det samma som 0xFF
DDRA = _BV(PA5);
//DDRA &= ~ _BV(PA2); // Du behöver inte nollställa biten PA2 eftersom den inte är satt. Se raden ovan.
while (1) // Loopar för evigt
{
if (PINA & _BV(PA2))
{
PORTC = 0xFF;
}
}
return 0;
}
Vad för emitterspänning? Vilken spänning matar du AVR:en med? 5.5V låter lite farligt.
jag matar avr:en med 5v...
läsgaffeln har jag kopplat till batteriet, innan spännings regulatorn... annars får den inte tillräckligt..
jag kanske ska sätta ett motstånd efter fototransistorn?
nu är hela port c hög...
bara de att de är höga hela tiden, eller jag behöver inte sätta pa2 hög ens...
Btw: vart kan jag läsa om bitoperationer? jag har letat endel men inte hittat något som är riktigt bra, antar att de står lite i databladet för avr:en men, det gör mig bara förvirrad
läsgaffeln har jag kopplat till batteriet, innan spännings regulatorn... annars får den inte tillräckligt..
jag kanske ska sätta ett motstånd efter fototransistorn?
nu är hela port c hög...
bara de att de är höga hela tiden, eller jag behöver inte sätta pa2 hög ens...
Btw: vart kan jag läsa om bitoperationer? jag har letat endel men inte hittat något som är riktigt bra, antar att de står lite i databladet för avr:en men, det gör mig bara förvirrad

Då är 5.5V max vad AVR:ens i/o-pinnar tål! Inte bra.
*kollar din andra tråd om läsgaffeln*
Du ska enbart koppla E (emittern) till jord och C (kollektorn) till en i/o-pinne. Sedan aktiverar du det interna pullup:et i AVR:en för i/o-pinnen du kopplar den till. Det gör du genom att sätta pinnen till ingång (görs i t ex DDRA) och sedan sätta motsvarande bit i t ex PORTA för att aktivera pullup:et.
*kollar din andra tråd om läsgaffeln*
Du ska enbart koppla E (emittern) till jord och C (kollektorn) till en i/o-pinne. Sedan aktiverar du det interna pullup:et i AVR:en för i/o-pinnen du kopplar den till. Det gör du genom att sätta pinnen till ingång (görs i t ex DDRA) och sedan sätta motsvarande bit i t ex PORTA för att aktivera pullup:et.