Forum: Mikrocontroller und Digitale Elektronik pwm attiny26 ?


von Madwilli (Gast)


Angehängte Dateien:

Lesenswert?

hallo ihr profis

ich möchte zwei 12v halogen lampen (35-50w) per pwm steuern.
über den jp1 sind 5 taster angeschloßssen die aus /lampe links, lampe
rechts, beide lampen  hell  dunkel steuern sollen.software ist nicht
das problem.

die frage ist nur ob die schaltung so funktioniert und wie groß
die wiederstände r1/r2 sein müßen.

danke für eure hilfe

gruß
madwilli

von harry (Gast)


Lesenswert?

hi,

die schaltung ist schon ok so, wenn du dir'n gefallen tun willst,
hängste noch drosseln in die 12v versorgungsleitungen vor die lampen,
sonst sauste dir die spannung ein. r1/r2 kannste mit 2k2 auslegen, dann
fliesst 1/2mA auf's gate vom buz11, damit steuert der locker auf.
wenn's dir zuviel stromverbrauch ist, kannst du auch höher auslegen,
aber dann sollten noch ableitwiderstände von gate nach gnd führen,
sonst will der buz bei jedem flohhuster aufmachen.

ander frage mal: ich poste hier wie doof wegen pwm auf tiny26.
klappt das bei dir etwa? ich krieg aus dem ding nix raus (getürkt halt
nur, PB.3 an, warten, PB.3 aus, ist aber elend.
womit programmierst du? assembler? oder was lockeres?
gruss, harry

von Madwilli (Gast)


Lesenswert?

hi harry

danke für deine antwort

jetzt machst du mir angst!!!
ich habe sowas ähnliches schon mit dem 2313 gemacht
über soft pwm. hab jetzt extra den attiny26 genommen
wegen den 2 pwm ausgängen und wegen smd.
ich progge mit bascom , hat bis jetzt immer gereicht.
aber wenn das bei dir nicht läuft hoffe ich du findest eine lösung.
bis meie attinys da sind ( kann aber noch ein paar tage dauern )kann
ich dir nicht sagen ob es bei mir geht.aber wenn sage ich bescheit.


kannst du mir vieleicht auch noch sagen wie groß
die drosseln sein müßten?

dank
madwilli

von dervatt (Gast)


Lesenswert?

schaltung ist sicherlich gut, aber wie mein vorredner schon sagt:
so "schmutzeimer" fehlen noch:
drossel zum entstören, die muss den strom aber können.
widerstände an den gate's.
0,1 mükrofaräder an den spannungsreglern in kombination mit 100 mükro
elko's.
ev. eigene spannungsverorgung für die steuerung.
tschaui

von harry (Gast)


Lesenswert?

graus o graus, ich prog auch in bascom, mit fastavr hab ich's auch
schon probiert, geht mit jedem controller, nur der tiny bringt mich
noch um mein restchen verstand, naja ich bleib dran.
für die drosseln gilt mal ganz pauschal: möglichst viel möglichst
dicken drahl auf möglichst viel eisen, dann wird's ruhig.
neee, nich erschrecken, die kleinen runden markstückgrossen
(ooops)dinger tun's ganz brauchbar, die drahtsttärke sollte halt bei 5
amperes nicht unter 0,8 mm liegen, sonst wern die dinger heiss.

so long, wir bleiben am ball, harry

von dervatt (Gast)


Lesenswert?

@madwilli
poste doch mal dein listing, ist doch immer interessant wie der eine
oder andere so vorgeht. meckerer gibt's immer, die muß man
ignorieren.
tschaui

von Madwilli (Gast)


Lesenswert?

0,1 mükrofaräder an den spannungsreglern in kombination mit 100 mükro
elko's

muß das auch sein wenn die betriebsspannung aus
bleigel akkus kommt?

gruß
madwilli

von Madwilli (Gast)


Lesenswert?

reichelt nummer
77A 10µ
High Current Funkentstördrossel
Festinduktivität,
mehrlagige Wicklung
auf Ferritkernen.
I: 5,00 A
R: 0,035 Ohm
Durchmesser: 8 mm
Länge: 26 mm


währe das eine passende ?

danke

von dervatt (Gast)


Lesenswert?

@madwilli
elko's können sicherlich dann kleiner sein, sollen nur ev.
schwingungen vermeiden helfen.
aber poste doch mal dein listing.
tschaui

von Madwilli (Gast)


Lesenswert?

@dervatt
listing habe ich noch nicht
da die attinys noch nict da sind.

ist jetzt erstmal der planungsteil

madwilli

von Sebastian__ (Gast)


Lesenswert?

Hallo,

was tut ihr euch denn immer so schwer mit dem PWM? man braucht doch nur
mal halbwegs das Datenblatt lesen. So init. ich mein Tiny26 mit PWM,
allerdings brauche ich nur 1kanal.

;Init Timer 1 as PWM Controller
Timer1_INIT:

  ;die PWM weden mit 31KHz betrieben und eine AUflösung von 8bit ==
(255=100%)
  ldi temp0, (0<<CS13)|(0<<CS12)|(1<<CS11)|(0<<CS10)
  out TCCR1B, temp0    ;Timer 1 Clock Prescaler == CLOCK/4 =16Khz
(CS10+CS11), 32KHZ(CS11)
  ldi temp0, 255
  out OCR1C, temp0    ;Auflösung 8Bit des PWM A und B
  ;Set PWM B On
  ldi temp0,
(0<<COM1A1)|(0<<COM1A0)|(1<<COM1B1)|(0<<COM1B0)|(0<<PWM1A)|(1<<PWM1B)
  out TCCR1A,temp0    ;PWM B = On, kein Inverser Out

  ldi temp0, (1<<TOIE0)|(1<<TOIE1)
  out TIMSK, temp0    ;// setze IRQ Flag von timer0 auf 1

Sebastian

von Matthias (Gast)


Lesenswert?

Hi

"dann fliesst 1/2mA auf's gate vom buz11"

Was natürlich Blödsinn ist. Das Gate eines FET stellt im Prinzip einen
Kondensator dar. Da fließt, nach dem Umladen, überhaupt (je ein paar nA
aber die wollen wir jetzt mal ignorieren) kein Strom mehr. Da eine
Glühlampe ziemlich träge ist kann man die PWM-Frequenz eher klein
wählen (max. 100Hz) Damit sind die Verluste im Transistor beim Umladen
des Gate auch zu vernachlässigen.

Zum FET:
Der BUZ11 ist hier absolut ungeeignet da er bei 5V Gate-Source-Spannung
nicht anständig öffnet. Der Transistor würde warm werden. Besser einen
Logic-Level-MOSFET wie z.B. IRLU2905/IRLR2905 (TH/SMD) verwenden.
Diesen mit 100-330Ohm Gatewiderstand (um die Schaltflanken etwas zu
verschleifen aber trotzdem die Schaltverluste klein zu halten).
Zusätzlich noch ein Ableitwiderstand von etwa 10k vom Gate nach Masse
um undefinierte Zustände zu vermeiden wenn der AVR im Reset ist.

Eine Induktivität ist bei Gleichspannung eher störend. Durch den Wendel
der Glühlampe hat man schon genug Induktivität. Es empfielt sich
deshalb eine Freilaufdiode antiparallel zur Last.

Zur Schaltung:
Das isp-Interface fehlt natürlich. AVcc muß mit Vcc und einem 100n
Kondensator gegen Masse beschaltet werden. Evtl. noch eine kleine
Chip-Induktivität vor AVcc wenn der AD-Wandler verwendet werden soll.
Die 100n Kondensatoren vor und hinter dem 7805 fehlen. Die
Lampenausgänge würde ich, wenn nicht fest verdrahtet, mit einer
Feinsicherung gegen Kurzschluß/Überlast sichern.

Wenn die Anwendung etwas komplexer wird als ein paar Zeilen Quellcode
würde ich eher zum Mega8 im TQFP greifen. Der ist kleiner als der
Tiny26 im SO20 und hat einen Hardwaremultipliezierer, 3 Timer und ein
paar mehr Features die man durchaus gebrauchen kann.

Schaltpläne bitte als GIF oder PNG in höherer Auflösung. Diese Formate
sind für Schaltpläne wesentlich besser geeignet da sie besser
komprimieren und das acuh noch verlustfrei (zumindest PNG).

War jetzt zwar etwas viel Kritik ist aber nicht böse gemeint.

Matthias

von Madwilli (Gast)


Lesenswert?

@Matthias

ich danke dir für deine kritik
wenn ich wüßte wie es richtig geht hätte ich nicht gefragt.

also die buz11 werden tatsächlich heiß.
werde dann woll die von dir vorgeschlagenen typen nehmen.

das isp interface brauche ich nachher nicht.

besten daank für die tips

gruß
madwilli

von harry (Gast)


Lesenswert?

@matthias

kritik würd' ich das nicht nennen, korrektur vielleicht. aber das ist
ja wohl auch zweck eines forums, wissen und info's austauschen, keiner
von uns ist als genie geboren und muss nix mehr lernen, also immer ran
mit 'kritik'.
zum buz11: hast natürlich recht, ich hatte in meiner schaltung vorher
'ne bd-type, da gab's den basisstrom noch, hab ihn aber gegen buz11
ausgetauscht, vorwiderstand is' aber noch drin.
ich regle 'nen scheibenwischermotor damit, der buz macht das richtig
gut, am ossi sieht's sauber aus, warm wird nur der 0,1ohm shunt
(source nach gnd), der buz bleibt cool. der hängt über vorwiderstand
direkt auf dem tiny, geht doch so, oder????

@sebastian
sieht echt cool aus, dein init. kriegt man sowas in bascom
implementiert? asm in bascom lässt sich (laut bascom) einbinden.

mein versuchs-listing, was aber nicht funktioniert, sieht so aus:

**** anfang
$regfile = "at26def.dat"
$crystal = 1000000           ' interener oszillator

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B
Pwm = Clear Down , Prescale = 1

'Pwm1a = 100    ' geht nicht, compiler fehlermeldung
'Pwm1b = 200    ' dito

Ocr1b = 100     ' keine fehlermeldung

End
**** ende

kompiliert wird ohne fehler, nur tut sich nix am PB.0 - PB.3, das
sollen laut datenblatt die oc1a und oc1b ausgänge sein.

wasdaszeitkostundnixbringt, gruss, harry

von Matthias (Gast)


Lesenswert?

Hi

ein BUZ11 ist einfach kein Logic-Level-FET und damit nicht für die
Ansteuerung des Gate mit 5V geeignet. Bei kleinen Lasten mag das noch
funktioneren ohne das der FET unnötig warm wird.

Vergleiche einfach mal die Datenblätter von BUZ11 und IRLR2905

http://www.fairchildsemi.com/ds/BU/BUZ11.pdf (Seite 3 rechts unten)
http://www.irf.com/product-info/datasheets/data/irlr2905.pdf (Seite 3
rechts oben)

Bei 4V Ugs fließen beim BUZ11 unabhängig von Uds max. 3A. Beim IRLR2905
ist der maximale Strom bei 4V Ugs erst bei über 40A erreicht.

Es ist numal so das ein üblicher Power-MOSFET nicht zur Ansteuerung mit
5V Ugs geeignet ist. Die Industrie fertigt nicht umsonst zig Typen die
genau für das geeignet sind.

Matthias

von Madwilli (Gast)


Lesenswert?

@harry

ich habe jetzt meine tinys bekommen und gleich aufgebaut
dann versucht pwm zu aktivieren aber ohne erfolg.
geht bei mir auch nur mit soft pwm

ich glaube das liegt an der at26def.def
der kenn ja nicht mal die befehle
    Compare1a
    Pwm1a
das selbe programm mit nem 2313 geht.
gruß
madwilli

von harry (Gast)


Lesenswert?

genau, das ist der punkt.
ist aber bis dahin noch kein problem, 'ne anfrage bei mark alberts hat
gebracht, man soll das ocr1a oder ocr1b register direkt beim namen
nennen, also 'ocr1a = 100' z.b.
das frisst der compiler klaglos, nur kommt nix am pin an.
mit 2313 hab ich's auch probiert, geht prima, nur brauch ich den tiny
wegen a/d wandler.
noch 'ne frage: powerdown beim tiny bringt den in einen endlosen
tiefschlaf, aus dem ich ihn nich mehr wachgeküsst krieg. hast du 'ne
idee?
gruss, harry

von Madwilli (Gast)


Angehängte Dateien:

Lesenswert?

an alle die mir geholfen haben

ich habe das ding jetzt fertig
funktionier alles super
und auch die transistoren werden bei weiten nicht mehr so heiß

danke
madwilli

von Madwilli (Gast)


Angehängte Dateien:

Lesenswert?

und noch das layout dazu

falls noch jemand einen optimierungs vorschlag hat bitte tut
euch keinen zwang an .

madwilli

von Martin (Gast)


Lesenswert?

Nach langer Suche und Festellung das es zwischen dem ATtiny26 und 
ATtiny261 einen Unterschied gibt, habe ich den Ansatz von Sebastian__ 
aufgegriffen und bin zu dem Ergebnis gekommen:
1
#include <avr\io.h>
2
#include <avr\interrupt.h>
3
4
void TMR_Init_v ( void )
5
{
6
    DDRB = 0xFF;    // PORT B komplett auf Ausgang schalten
7
8
    //die PWM weden mit 31KHz betrieben und eine AUflösung von 8bit == (255=100%)
9
    TCCR1B = (0<<CS13)|(0<<CS12)|(1<<CS11)|(0<<CS10); //Timer 1 Clock Prescaler == CLOCK/4 =16Khz (CS10+CS11), 32KHZ(CS11)
10
    OCR1C = 0xFF; //Auflösung 8Bit des PWM A und B
11
    //Set PWM B On
12
    TCCR1A = (0<<COM1A1)|(0<<COM1A0)|(1<<COM1B1)|(0<<COM1B0)|(0<<PWM1A)|(1<<PWM1B); //PWM B = On, kein Inverser Out
13
14
    TIMSK = (1<<TOIE0)|(1<<TOIE1); // setze IRQ Flag von timer0 auf 1
15
    
16
    OCR1B = 0x3F;   // 25% PWM an PIN 4
17
}
18
19
int main ( void )
20
{
21
    TMR_Init_v();
22
    while (1);
23
}

Port B bzw. der PIN4 sollte natürlich auf Ausgang geschaltet sein (1 
Std. fummeln und googeln) ( Beitrag 4 
http://www.roboternetz.de/phpBB2/viewtopic.php?t=8333)

Danke.

LG
Martin

von Horsti (Gast)


Lesenswert?

danke - das habe ich gesucht^^

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.