Hallo, Ich habe mal einen Serverlüfter aus dem Schrank gezogen um sich bei den Temperaturen etwas zu Kühlen und den Nebeneffekt des Lüfters als Lötrauchabsaugung zu nutzen. Da dieser bei einem Anschluss mit 12v volle Pulle losrast und laut ist, möchte ich ihn mit PWM ansteuern. Dazu habe ich etwas gegoogelt und diesen Sketch gefunden: http://www.circuitstoday.com/pwm-generation-and-control-using-arduino Dann habe ich den PWM- Pin (blaues Kabel) des Lüfters an einen entsprechenden PWM pin des Arduinos verbunden und kann somit mittels eines Potis die Drehzahl des Lüfters steuern, alles kein Problem. Da ich das ganze jedoch etwas "portabler" machen möchte, habe ich versucht das ganze auf einen Attiny85 zu übertragen. Alles angeschlossen, Poti an einen Analogeingang (idf. PB4) und den PWM-Ausgang an PB0. Den Sketch habe ich an die vorhandenen Anschlüssen angepasst und meinen Attiny mit der "Arduino as ISP"- Methode programmiert. Wenn ich das ganze aber anschalte läuft der Lüfter nur mit einer konstanten Geschwindigkeit, man kann nichts dran ändern... Habe ich irgendwas falsch angeschlossen oder eignet sich der Attiny85 dafür nicht? Hat jemand Ahnung was ich falsch gemacht habe? Über eine kurze Antwort würde ich mich freuen... VG
Gast
#5027839
Patryk D. schrieb: > Habe ich irgendwas falsch angeschlossen Natürlich. > Hat jemand Ahnung was ich falsch gemacht habe? und das Programm/Sketch ist auch falsch angepaßt.
War der Tiny "nackig", sprich ohne Bootloader? Wenn ja musste den erstmal draufbringen, gibt da auch Anleitungen für, zB. https://www.frag-duino.de/index.php/maker-faq/37-atmel-attiny-85-mit-arduino-arduinoisp-flashen-und-programmieren https://create.arduino.cc/projecthub/arjun/programming-attiny85-with-arduino-uno-afb829 Suchbegriffe: "attiny arduino bootloader"
Den bootloader habe ich auch gebrannt, läuft immer noch nix...
Gast
#5027955
Patryk D. schrieb: > meinen Attiny mit der "Arduino as ISP"- Methode programmiert. Alexander S. schrieb: > War der Tiny "nackig", sprich ohne Bootloader? Da braucht es keinen Bootloader, er wird da über ISP ganz normal programmiert. Hast du denn den CKDIV8 Fuse gesetzt? Von Haus aus ist die bei neuen AVR nicht gesetzt (programmed = 0) und sie laufen halt mit 1Mhz statt 8Mhz, könnte deine PWM durcheinander bringen. Der Lüfter ist aber schon ein PWM Lüfter mit 4Pin?! VCC, Masse, Drehzahl und PWM?! Was sagt das Datenblatt zur Std-Pin-Function an PB4?! (Bin grad mim Handy unterwegs) Und zu guter Letzt: Zeig Mal den Code!
Hi Wenn der Lüfter am ATtiny mit ziemlich genau 5V betrieben wird, könnte ich mir die geringe Drehzahl erklären. Müsste sich aber dennoch 'runterdimmen' lassen. MfG
Also ich habe es einmal so wie in dem Link gemacht:
______________________________________________________________________
int pwm = 0; // assigns pin 0 to variable pwm
int pot = 4; // assigns analog input 4 to variable pot
int t1 = 0; // declares variable t1
int t2 = 0; // declares variable t2
void setup() // setup loop
{
pinMode(pwm, OUTPUT); // declares pin 0 as output
pinMode(pot, INPUT); // declares pin 4 as input
}
void loop()
{
t2= analogRead(pot); // reads the voltage at A0 and saves in t2
t1= 1000-t2; // subtracts t2 from 1000 ans saves the result in
t1
digitalWrite(pwm, HIGH); // sets pin 12 HIGH
delayMicroseconds(t1); // waits for t1 uS (high time)
digitalWrite(pwm, LOW); // sets pin 12 LOW
delayMicroseconds(t2); // waits for t2 uS (low time)
}
______________________________________________________________________
___
Und ich habe auch selber noch einen Sketch geschrieben, mit der
analogRead Funktion, dann diesen Wert mappen (von 0-1023 auf 0,255) und
dann den gemappten Wert mit analogWrite ausgeben.
Und ja, ich habe den Ausgang des Attinys direkt an den PWM Pin des
Lüfters angeschlossen.
Irgendwelche Fuses oder so habe ich nicht reingemacht, ich habe einfach
nur meinen Sketch mit der Arduino au ISp hochgeladen (Als borad Attiny85
mit internal 1MHz Clock)
Und hier noch ein Schaltplan.
Gast
#5028516
Es sind mit Sicherheit die Fuses falsch gesetzt...
Jagut... Wie.....setzt man die dann richtig? :)
Ich habe es einfach mit einem externem Quarz gelöst. Vielen Dank für alle Antworten!
Eigentlich müßte man an den Fuses nichts ändern, irgendwo in den Untiefen der Arduino Einstellungen müßte es eine Einstellung für die Frequenz geben. Um zu schauen ob die Frequnz stimmt kann man einfach mal eine Led blinken lassen. Led ein warte x Zeit Led aus warte x Zeit In diesem Fall kann man einfach T1 und T2 durch feste Werte ersetzen, und statt dem Motor eine Led anschließen. Der Code beschreibt eine Software PWM, der Attiny85 hat durchaus die Möglichkeit einer Hardware PWM, unter Suchbegriffen wie z.B. "attiny85 pwm motor" sollte sich eine Menge finden lassen. Wenn die Fuses doch geändert werden müssen ist diese Seite recht hilfreich: http://www.engbedded.com/fusecalc/
Hi Patryk D. schrieb: > dann diesen Wert mappen (von 0-1023 auf 0,255) Nur, daß Das Mal gelesen wurde: 0...1023 -> 10bit 0...255 -> 8bit Da muß man nix 'mappen' - da reicht ein 2-fach shift rechts (2 Befehle) So wird aus
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
... viel mehr muß man bei 10bit nicht 'mappen' um auf einen anderen vollen Bit-Bereich zu kommen. Vll. eine Überlegung/Anpassung wert, wenn's mit der Ausführungszeit mit 'mappen' eng wird - könnte mir vorstellen, daß dabei doch einige Takte sinnlos verblasen werden - zumindest, wenn volle Bit-Bereiche in andere volle Bit-Bereiche umgerechnet werden sollen. (wobei man eigentlich hoffen sollte, daß der Arduino einen solchen Fall erkennt und das Ganze optimiert) MfG
Man kann auch einfach im ADC den Wert auf left Adjust im ADLAR Register setzen und nur das High Byte nutzen... Geht noch schneller...
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.
