Pages: [1]   Go Down
Author Topic: Problem med PWM, transistor till led.  (Read 10867 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hej,

Jag har försökt få fyra stycken led att pulsera med hjälp av en transistor enligt det här schemat fast med en UNO rev 3 och inte en MEGA.

Problemet som uppstår är att de inte slocknar, de pulserar men slocknar aldrig.
Jag har sökt en del men inte hittat något som hjälpt.

Är det någon som kan förklara detta?


* Skärmklipp.PNG (16.52 KB, 613x576 - viewed 111 times.)

* Skärmklipp2.PNG (41.08 KB, 501x602 - viewed 116 times.)
Logged

Sweden
Offline Offline
Full Member
***
Karma: 1
Posts: 185
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hej!

Du behöver ett "pull down" motstånd på utgången.
Sätt ett 10K motstånd ifrån basen på transistorn till GND.

Sedan är det en bra idé att begränsa strömmen på dina LED:ar annars kan dom brinna upp.

/Olof
Logged

Copenhagen, Denmark
Offline Offline
Edison Member
*
Karma: 32
Posts: 1214
Have you testrun your INO file today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Och ...

Programmeringsmæssigt skal du i setup() ha
pinMode(LED,OUTPUT) ;
istället för analogWrite. Det gäller jo bare några mikrosekunder til loop börjar.

Hur længe schickar du 0 ut på din analogWrite i loopen.? Et tiotal mikrosekunder, så er  For-loopen kommet videre med 1, 2, .... Dom slocknar säkert, du hinner bare inte se det.
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 100
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

felet ligger i din beräkning av out.

Code:
out = sin(in) * 127.5 + 127.5;

eftersom multiplikation går före addition kommer du alltid att addera 127.5 till out. Detta gör att ditt minimivärde blir 127.5 och max blir 255.

Detta borde ge dig det du söker:
Code:
out = sin(in) * 255;
Logged

Copenhagen, Denmark
Offline Offline
Edison Member
*
Karma: 32
Posts: 1214
Have you testrun your INO file today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@Kalevo: Nej det han har funkar - det ger värden mellan 0 og 255. Ditt förslag ger mellem -255 og +255. Prova. (Skriv ett litet program som skriver til Serial.print)

Logged

Nastola
Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

int led = 9;
 float in;
 float out;
 
void setup()
{
  pinMode(led,OUTPUT);
  Serial.begin(1200);
}

void loop()
{
  for (in = 0.00; in <= 6.283; in = in + 0.001)
  {
  out = sin(in)*127.5 +127.5;
   analogWrite(led, out);
  }   
}
Logged

Ei se toimi ellei sitä ohjelmoi toimivaksi.

Pages: [1]   Go Up
Jump to: