MODDING-FAQ FORUM

Alles rund ums Modden => Elektronik, Elektrik => Thema gestartet von: philipp.ni am Februar 7, 2005, 12:26:10



Titel: Atmel und 4 PWMs
Beitrag von: philipp.ni am Februar 7, 2005, 12:26:10
hoi.
ich will mir ne lüftersteuerung basierend auf nem atmega16 bauen. dabei sollen 4 kanäle per PWM angesteuert werden. der chip hat diese 4 PWMs, aber ich werd aus den Datenblättern net schlau (google gibt garnichts her), wie ich die richtig einstell. ich verwende assembler, darum bringen mir die topics hier auch nix, da die alle in basic gemacht sind. Hat da jemand ne ahnung wie ich die ansteuer, oder ist es besser das irgentwie extern zu realisieren?!

cu philipp


Titel: Re: Atmel und 4 PWMs
Beitrag von: Spunky am Februar 7, 2005, 16:27:49
Die PWM aus dem AVR kannst du schlecht für Lüftersteuerungen verwenden. Sie liefern zu hohe Frequenzen. Eine PWM für Lüfter sollte etwa 50 bis 100Hz haben.
Du wirst also die PWM selber per Programm und Timer bauen müssen.


Titel: Re: Atmel und 4 PWMs
Beitrag von: philipp.ni am Februar 7, 2005, 18:47:33
ok, thx. aber wie stell ich die timer ein? du hast das doch schonmal gemacht, oder? haste nen beispiel-code für mich? ::) ich find einfach nix dazu :(
die sekündliche abfrage der temperatursensoren werde ich wohl mit nem 555er und normalem interrupt machen ;)

edit: auserdem hat der mega16 - wie ich gerade bemerkt habe nur 3 timer (2x8bit 1x16bit). der einzige der 4 timer hätte wäre der 162er und der ist a) 2€ teurer und b) hat er keine ad-wandler die ich ja zur temperaturbestimmung brauche...


Titel: Re: Atmel und 4 PWMs
Beitrag von: OlafSt am Februar 7, 2005, 19:47:37
Für eine PWM in Software braucht man nur einen Timer.

Nur als Beispiel, wie ich ein inzwischen fast abgeschlossenes Projekt aufgebaut habe:

1 Timer, 8 Bit. Mehr nicht.

In diesem Timer wird:
- Ein 1/100-Sekunden-Clocktick generiert
- Ein 1-Sekunden-Tick generiert
- 5 PWM-Kanäle erzeugt (200 Steps maximal)

Das ganze läuft auf nem Mega128 @ 14.7456MHz. Und ich hab nebenbei noch Zeit, um
- 3 Taster abzufragen
- 11 LED anzusteuern
- Fernsteuerung und Near-Realtime-Debugging per Serielle

zu realisieren. Zeit für ne LCD-Ausgabe wäre sicherlich auch noch Massenhaft vorhanden.

Du siehst: Alles eine Frage des Konzepts.


Titel: Re: Atmel und 4 PWMs
Beitrag von: philipp.ni am Februar 7, 2005, 20:50:35
damit wir uns richtig verstehen:
also muss ich den timer so einstellen, dass er alle 1/100 sek. jumpt und dann dort vllt. anhand eines runterzählenden registers die pwms setzt?! und dann nochmal die frage, WIE setze ich den timer?


Titel: Re: Atmel und 4 PWMs
Beitrag von: OlafSt am Februar 8, 2005, 08:55:40
So einfach ist es nun auch wieder nicht  ;D

Mein Timer läuft mit 20kHz, damit ich eine halbwegs brauchbare PWM erzeugen kann. Warum das so ist, erkennt man nach den ersten Versuchen selbst.

Zum Thema Timer einstellen rate ich zu einem Blick in das Datenblatt, es wird während des Projektes ohnehin dein bester Freund werden.


Titel: Re: Atmel und 4 PWMs
Beitrag von: Freak5 am Februar 8, 2005, 20:17:56
Kann man die Spannung aus dem PWM nicht mit einer Spule soweit glätten, dass immer eine Grundspannung vorhanden ist, mit der der Lüfter auch seine Elektronik laufen lassen kann? ???


Titel: Re: Atmel und 4 PWMs
Beitrag von: b0nze am Februar 8, 2005, 20:36:02
Du könntest einfach nen Kondi hinten ran hauen, wobei du dann aber ne normale Spannung hättest.

Kommt ganz drauf an, warum du die PWM überhaupt einsetzt (Keine Verluste/ Niedrige Drehzahlen).

Zur PWM-Frequenz (bei Software):
CPU-Takt / (TimerTakt*Auflösung)

b0nze


Titel: Re: Atmel und 4 PWMs
Beitrag von: philipp.ni am Februar 8, 2005, 23:07:17
die pwm setze ich ein um die lüfter zu steuern ;) wobei mir das steuern wichtiger ist als die verluste... also 5-10% wären mir am ende au egal. ich sollte wohl noch sagen, dass das mein erstes projekt mit mikrocontrolern ist, und ich daher auch noch recht unbeholfen mit den datenblättern bin - mein englisch ist auch nicht das beste (9. Klasse gymnasium eben).
das mit dem kondi bringt mich auf eine idee - ich könnte (um eine digitale frequenz zu kriegen) einfach nen 555er auf nen interrupt legen - dann hab ich meine frequenz und das problem mit den timern hab ich auch nicht mehr. wie ich das aus den datenblättern braucht man ja eh nen externen zeitgeber... die sache mit dem register runterzählen gefällt mir von mal zu mal besser - bei 50% Fan hab ich dann bei 20khz frequenz 100steps an und danach 100steps aus.  damit ist auch ganz einfach rechenbar (ich hab das einstellen in 10%-schritten geplant) :)

wenn ihr nen guten grund dagegen wisst bin ich natürlich immer offen :D

thx und cu philipp


Titel: Re: Atmel und 4 PWMs
Beitrag von: b0nze am Februar 9, 2005, 09:10:07
Zitat von: philipp.ni $txt[176] Februar 8, 2005, 23:07:17
wie ich das aus den datenblättern braucht man ja eh nen externen zeitgeber...


Zeitgeber ist nen schlechtes Wort :) Du brauchst ne Taktquelle, mit der der Mikrocontroller arbeitet, einen Quarz mit xMhz. Das braucht man aber immer mit nem MC, höchstens du hast einen der AVR-Mega-Typen oder Tiny, die haben einen eingebauten RC-Oszillator.
Der Timer selbst ist einfach nen Ding, dass dir alle xxxTakte nen Interrupt auslöst.

Für ne SoftwarePWM hast du einen Zähler. Der Zähler wird in jedem Interrupt heruntergezählt. Dann hast du deine Werte der Kanäle.
Ich machs so:
Pins auf 0 und den Zähler auf das Max laden (PWM-Auflösung)
Bei jeder ISR (Interrupt Service Routine) den Zähler eins runterzählen und schauen, ob einer der Werte gleich ist wie der Zähler, wenn ja, dann setze den Pin.
... gleiche gleiche gleiche gleiche
bis du bei Zähler=0 bist, dann wieder oben anfangen.

Alternativ könnteste nen DA Wandler nehmen... TDA8444 (8 Kanäle).

Um die Lüfter ansteuern zu können brauchste aber noch ne Endstufe. Entweder machste ne analoge Spannung aus der PWM und modifizierst etwas ne NoDrop oder direkt an nen MosFet (gut sind High-Side-Switches, dazu kann Olaf berichten)

b0nze


Titel: Re: Atmel und 4 PWMs
Beitrag von: philipp.ni am Februar 9, 2005, 11:24:16
ich verwende nen mega16, werde aber trotzdem n externes Quarz verwenden.

Ich hab jetzt was sehr gutes über timer timer gefunden. ich nehm nen takt von 16MHz und dann erstmal nen prescaler von 8 (TCCR0 auf 0x02) dann müssen es genau 100 schritte bis zum interrupt sein. nur, wie sag ich dem timer wann der counter overflowed ist? Einfach TCNT0 auf 0x64 (dez.: 100) setzen? zu der Endstufe: vertragen die lüfter keine PWM oder wie? ich dachte da einfach an nen transistor, der die 5V vom µC in die 12V für den lüfter umwandelt.


Titel: Re: Atmel und 4 PWMs
Beitrag von: b0nze am Februar 9, 2005, 12:27:14
Such dir erstmal ne Frequenz aus, mit der der Timer anspringen soll. Besser noch Takte.
Du musst ja zwischendrin noch Taster etc. abfragen. Da kommt natürlich die Frage auf, ob du mit Assembler oder C programmierst. Olaf und ich haben in Assembler programmiert und das ist um Massen schneller als C in solchen Sachen. Die ISR muss möglichst kurz sein und das andre sollte natürlich auch nicht lange dauern.

Der Timer hat einmal die Überlauf (Overflow) und einmal die Compare Match Funktion. Für das würde ich der Einfachheitshalber einfach den Compare Match nehmen (CTC = Clear Timer on Compare Match).
Da schreibste nen Wert ins OC-Register (OCR0, OCR1AH:L etc.) und dann den richtigen Modus in den Control-Registern einstelllen und dann zählt der Timer mit dem Prescaler immer bis zu dem Wert hoch und löst den IRQ aus und resettet sich.
Mit Overflow müsstest du halt immer in jeder ISR einen Preload machen, und zwar bei den 8bittern 256-[gewünschter Wert], damit er nur noch x-Schritte hochzählen muss.

wenn du ne 10%-Auflösung hast, dann sind das ja 10 Schritte. Ich denke 20 wären OK.
16Mhz / 8 = 2Mhz,
2Mhz / 100Hz = 20kHz,
20kHz / 20 Schritte = 1000;

Für nen 8-Bit-Timer brauchste also nen höheren Prescaler.

Für die Ansteuerung kannste auch ne PWM nehmen. Da sind solche HighSideSwitches (teure MosFets) sehr gut.
Olaf beim Werkeln (http://www.microlaboratories.com/Forum/index.php/topic,216.msg2711.html#msg2711)

b0nze


Titel: Re: Atmel und 4 PWMs
Beitrag von: philipp.ni am Februar 9, 2005, 12:58:34
ich programmier wie oben schon erwähnt in assembler.

was sind die 1000?
ich dachte das so:
16Mhz / 8 = 2Mhz,
2Mhz / 100 = 20khz,
20khz / 200 Schritte = 100

d.h. ich nehm die gespeicherte %-zahl mal 2 dann hab ich die possition ab der der port auf 1 geschalten werden muss. dann zähl ich bei jedem interrupt den software-counter runter ("dec fancount") und wenn fancount == fanswitch schalt ich auf 1.
damit hab ich theoretisch ne auflößung von 0.5% aber die frage ist ja immer wie ichs dem user präsentier. wenn ich bei jedem erhöhen +10 und bei jedem erniedrigen -10 rechne sinds wieder 5% schritte. ich denke, das ist die einfachste möglichkeit.
wenn ich nen prescaler von 256 nehm darf ich bei 10% Fan bei 25.6 umschalten ;)


Titel: Re: Atmel und 4 PWMs
Beitrag von: b0nze am Februar 9, 2005, 13:05:51
Warum willst du unbedingt auf 0,5%? (5 ProMille ;D)
Olaf hat halt sein Lämpchen und da hatter halt 200 genommen. Aber nen Lüfter da denke ich sind 25-30 Maximal drin...

Wenn man dann mit 20 statt 200 rechnet, ist der Wert, der in das OC-Register geschrieben wird nämlich zu groß für nen 8-bit.

Aber is nur ne Kleinigkeit.

b0nze


Titel: Re: Atmel und 4 PWMs
Beitrag von: philipp.ni am Februar 9, 2005, 13:30:52
wie gesagt ist es mit nem prescaler von 8 später leichter zu rechnen als mit 256 oder 1024 o.ä.  was spricht denn gegen 200?

noch was: sind die 5V vom pc-netzteil stabiel genug, oder soll ich 12V und nen 7805er nehmen?


Titel: Re: Atmel und 4 PWMs
Beitrag von: b0nze am Februar 9, 2005, 14:05:00
Ha, lol, das is gut :)
Für was glaubste, ist nen PC-Netzteil gemacht? Für hochkomplizierte und empfindliche Bauteile :)

Ich hab das Zeugs fast immer am USB hängen.

Spezifikationen sind glaub -5% und +10%, also bis 5,5V und das hält er ja aus.. worst case.

Gegen deine 200 hab ich nix, aber das braucht niemand. Da drückt man sich nur die Finger tot.

b0nze


Titel: Re: Atmel und 4 PWMs
Beitrag von: philipp.ni am Februar 9, 2005, 15:06:56
stimmt au wieder :D
ich hängs wohl eher an nen molex da das teil eh in meine front verdammt wird.

darum existieren die 200 auch nur intern. extern (per lcd anwählbar) sinds 10 oder 20 ;)

noch mal zu dem HITFET: ~1.30€ pro gate ist doch recht happig. unterscheidet sich das ganze sehr von der nd2-mod von klinkerstein (http://wayne.klinkerstein.m-faq.de/digipoti/digipoti_idee.png)? und wie setz ich den in die schaltung ein? einfach durch den IRF ersetzen?


Titel: Re: Atmel und 4 PWMs
Beitrag von: OlafSt am Februar 9, 2005, 15:30:11
Die HITFET sind nicht unbedingt billig, zugegeben. Aber, im Gegensatz zu Klinkerstein's Idee gibt es einen Berg Problemlöser für's Geld:

Ansteuerung mit TTL-Leveln
Kurzschluß-Schutz
Überhitzungs-Schutz
Überstrom-Schutz
Überlast-Schutz

um nur einige zu nennen. All dies findet sich im IRF nicht und muß ggf. extern drumherum gebastelt werden. Für meinen Anwendungsfall waren die Dinger ideal, muß nicht für alle gelten  ;)

Im übrigen geben viele Lüfter ein unangenehmes Brummen/Singen/Summen  von sich, wenn sie mit zu hoher PWM-Frequenz getaktet werden - wirst also etwas probieren müssen.


Titel: Re: Atmel und 4 PWMs
Beitrag von: philipp.ni am Februar 9, 2005, 15:35:43
wie benutz ich den HITFET denn? einfach signal vom mikrocontroller -> HITFET -> kondi 100nF?

unter diesen lüftern sind z.b. auch einige papst... hab das langzeitprojekt au gelesen ;)


Titel: Re: Atmel und 4 PWMs
Beitrag von: Freak5 am Februar 9, 2005, 19:41:01
Naja man kann das ja auch anders programmeren-> So wie die Maus mit Beschleunigung.
Dann nimmt man die Impulse, die man vorher gegeben hat, wenn man dauerdrücken gespielt hat und multipliziert das mit 2. Wenn du das ein paar mal machst(ich würde auch eine Obergrenze einbauen) Dann ist man auch bei 200 Schritten ganz schnell durch. ;D


Titel: Re: Atmel und 4 PWMs
Beitrag von: philipp.ni am Februar 9, 2005, 22:48:15
ich denke ich bleib bei 20 Schritten.
Wie rechne ich denn mit gepackten BCD Zahlen? ich hab gelesen, dass es den befehl DAA gibt, aber laut Befehls-tabelle von Atmel gibts den nicht.


Titel: Re: Atmel und 4 PWMs
Beitrag von: b0nze am Februar 9, 2005, 23:23:51
Warum fängst du jetzt mit BCD an? Vorher noch verschwenderisch immer 90% seiner 200Schritte vergeuden und jetzt an ner BCD sparen  :bestens:.

Ich selbst hab eigentlich noch keine PBCD benutzt und wüsste auch nicht, wann du die brauchst.
Als Hilfsmittel hat der Atmel das Half-Carry Flag, das glaube ich gesetzt wird wenn was über die 15 geht.
Speicher das Zeugs lieber als Wert in den RAM  mit STS und LDS.

Programmierst du eigentlich in Assembler?

b0nze


Titel: Re: Atmel und 4 PWMs
Beitrag von: Freak5 am Februar 9, 2005, 23:32:57
Man kann doch immer Digital in richtige Zahlen umrechnen, wenn man es zum Display schickt. Das muss man bei Grafik ohnehin.
Also machen diese gapackten Zahlen meistens keinen Sinn-> Meine Meinung


Titel: Re: Atmel und 4 PWMs
Beitrag von: b0nze am Februar 10, 2005, 08:55:48
Ich speicher die Werte immer in einem Byte und dann kommt einfach die Umwandlung.

zehner2ascii:
clr temp1
zehner2ascii_2:
cpi temp3, 10
brcs zehner2ascii_3
inc temp1
subi temp3, 10
rjmp zehner2ascii_2
zehner2ascii_3:
ori temp1, 0x30        ; wandelt in ascii um (48 addieren)
ori temp3, 0x30

; --- entfernt die führende Null, falls vorhanden ---
cpi temp1, 0x30
brne zehner2ascii_4
ldi temp1, 0x20
; --- ---- ----
zehner2ascii_4:
ret


Ganz einfach nach dem Prinzip des Subtrahierens. Du ziehst immer 10 ab solange es geht und dann weiste wieviel 10er da waren.
temp1/temp3 sind die benutzen Register und sind hier hohe Register.

b0nze


Titel: Re: Atmel und 4 PWMs
Beitrag von: philipp.ni am Februar 10, 2005, 09:43:10
PBCD deshalb, weil ich für die ausgabe 2 7-Segment-Anzeigen verwende. dessen Treiber wollen es eben als PBCD. 17€uronen für n passendes display sind mir z.zt n bischn viel (bei reichelt). bei pollin gäbs zwar eins für 5€ aber a) ohne hintergrundbeleuchtung, b) weiß ich net wie die qualität ist und c) kommen noch 5€ versandt drauf...
Wenn ihr n billiges 4x20 display habt... ich bin immer offen dafür :)

und zum dritten mal: ja, ich programmier in assembler.


Titel: Re: Atmel und 4 PWMs
Beitrag von: b0nze am Februar 10, 2005, 12:39:38
Also.. du behälst den Wert trotzdem in einem in einem Register, der kann dann einen Wert von 0-255 haben.

Wenn du deine Anzeige aktualisierst, dann wandelst du diesen Wert mit der Routine, die ich da gepostet hab um. Die macht es dann zu einem BCD (ohne P  ;D), dazu musst du noch die 2 "ori tempx, 0x30" rausmachen (das wäre dann ja ASCII). Die 3 Zeilen drunter kannste schon dranlassen und ersetzt den Wert, den der Teil reinschreibt halt durch das, was bei dem Treiber (Zwischenfrage: die 4055/4056?) ein "Leer" ist.

Also haste am Ende 2 Bytes.
Jetzt nimmste Byte2 (das für die Zehner) und haust ihm einen "SWAP" auffen Kopf und dann wird aus 1234 5678 ==> 5678 1234.
Dann noch ein "OR Byte1, Byte2" und du hast es.
Zur Sicherheit kannste vorher noch ein "ANDI 0x0f" auf Byte1 und Byte2 machen, das löscht die nicht benötigten Bits, aber die dürften immer 0 sein.

Und dann gibste Byte1 einfach am PortX aus.

b0nze


Titel: Re: Atmel und 4 PWMs
Beitrag von: philipp.ni am Februar 10, 2005, 14:06:42
ich benutz den 4511er. der hat einige vorteile wie z.b. dass er ne null automatisch mit nix ersetzt ;)

wieso suchst du nach nem carry-flag und guckst net einfach mit brlt ob die zahl kleiner als 10 ist?


Titel: Re: Atmel und 4 PWMs
Beitrag von: OlafSt am Februar 10, 2005, 16:42:22
Das ist ganz einfach: Das ist "old-school-style"  ;D. Es gab mal Zeiten, da waren das Carry, Zero und Negative das einzige an Flags, mit dem herumspringen konnte - Branches, die auf Kombinationen von Flags reagierten, waren da unbekannt.

Letztlich muß ein CPI-Befehl vor dem BRxx kommen, damit die Flags korrekt gesetzt sind. Ob dann per BRCS oder BRLT gebrancht wird, spielt nur eine marginale Rolle, solange dieser BRLT (der ja für signed-Vergleiche gedacht ist und somit das N-Flag mit berücksichtigt) auch richtig angewandt wird.

Für unsigned-Vergleiche wäre da eher der BRLO geeignet - der hat allerdings sogar den selben Binärcode wie BRCS, ist also nur ein anderer Name für dasselbe Kind.


Titel: Re: Atmel und 4 PWMs
Beitrag von: philipp.ni am Februar 10, 2005, 18:02:29
Solangs klapt, soll mirs recht sein  ;D
wie geht denn der teil mit dem HITFET? einfach signal an HITFET und hinter den noch n kleiner kondi?

Wo sind denn beim mega16 die Register versteckt (adressen)? in der m16def.inc sind se net drin und im datenblatt hab ich au nix gefunden... kann eigentlich net sein, dass es die net gibt, oder?

bin nämlich eigentlich fertig mit dem proggi aber der meint er kennt R10 net (die erste definition von Registern)

EDIT: ops, hab .equ statt .def verwendet *schäm*


Titel: Re: Atmel und 4 PWMs
Beitrag von: OlafSt am Februar 10, 2005, 20:53:13
Um zu begreifen, wie das mit den Switches geht, empfehle ich folgende Lektüre:

High Side Switch BTS432 (http://www.ortodoxism.ro/datasheets/siemens/BTS117.pdf]Low Side Switch BTS117[/url]

[url=http://www.ortodoxism.ro/datasheets/infineon/1-bts432e2.pdf)

Anschließend dürfte alles klar sein.


Titel: Re: Atmel und 4 PWMs
Beitrag von: philipp.ni am Februar 11, 2005, 19:02:35
danke vielmals :D
ich hab jetzt (endlich) den schaltplan fertig. bin mir aber nicht sicher, ob jetzt alles stimmt, darum würde ich mich sehr freuen, wenn einer von euch ihn nochmal auf mögliche fehler durchsehen könnte.
Ist alles etwas unübersichtlich geworden, aber ich denke es ist soweit alles zumindest relativ gut zu lesen. Der kritischste Bereich ist die Schaltung der Lüfter oben rechts, da bin ich mir mit der schaltung nicht ganz sicher. die widerstände vor den BTS117 sind jeweils 1k, bei den 7segment-anzeigen sinds 14 mal 150Ohm :)
den schaltplan gibs zu guter letzt au noch ;) : http://dls.nochwer.de/images/modding/MicroFanControll.jpg

Big Thx schonmal an alle die mir hier weitergeholfen haben und an die, die es noch werden.
philipp


Titel: Re: Atmel und 4 PWMs
Beitrag von: b0nze am Februar 11, 2005, 19:44:30
Ein paar kleine Bemerkungen:
-Leg' die Taster nicht an die 3 Pins, halte RXD und TXD frei, damit du noch ne PC-Kommunikation frei hast. Spar dir bei den Tastern die PullUp-Widerstände und schalte einfach die internen ein.
-Der BTS117 ist doch kein MosFet? Das is doch nen 5-beiniger Schalter. AFAIK. Du solltest den High-Side 432 nehmen und das in die 12V-Leitung hängen, weil dann könntest du später vielleicht noch die TachoSignale auswerten.
-Macht der 4511 aus jeder 0 ne "nix"? Dann isser falsch, mach lieber nen Pin hin, der die Anzeige einschaltet ;) weil nacher haste 1_ statt 10
-Die Grundlasten am Quarz (Kondis) müssen glaub 33 PIKO haben.
-Der Stützkondi am Reset-Pin muss glaub auch direkt an den Pin, wäre glaub logischer.
-Die eine Led, mit nem höheren Widerstand begrenzen. Am besten mit 1K, dann leuchtet se aber nicht mehr so arg. 330 würde ich mal sagen.
-Die PC0 und PC1 (TWI) könntest du auch verwenden, um Temperatursensoren wie den DS1621 oder LM75 anzusteuern oder andere IC-Peripherie (IO-Expander etc.). Is auch egal, falls das wäre, müsstest du eh löten.
-Nochmal Taster: die müssen entprellt werden, sonst bekommste 100Impulse bei einmal drücken. Entweder Softwaremäßig oder Hardware. Für Software hab ich was schönes gefunden: muss in ne Timer-ISR rein (http://www.mikrocontroller.net/forum/read-4-20549.html#new), sonst Tiefpass: Widerstand, Kondi.


Nur zur Anregung

b0nze


Titel: Re: Atmel und 4 PWMs
Beitrag von: philipp.ni am Februar 11, 2005, 20:31:17
danke vielmals... und wie immer super schnell  :o

- danke, das hatte ich garnet bemerkt, auserdem belegen die noch den int0, den ich vllt. mal gebrauchen könnte. wie schalt ich die internen pullup-wiederstände ein? ich kapier die tabelle im datenblatt net so ganz :-\
- der BTS117 IST ein PowerFET mit 3 beinchen wie in den datenblättern von olaf zu sehen ist (N channel vertical power FET...) ich denke ich bleib erstmal bei denen...
- der 4511-er blockt die nullstellen, wenn pin 4 an Masse ist. somit kann ich es für das 10er-display aktivieren für das einer nicht
- fast richtig, müssten eigentlich 32p sein, die gibs nur bei reichelt net... sind richtig in der bestellliste nur n fehler aufm schaltplan *schäm*
- laut http://www.roboternetz.de/phpBB2/album_pic.php?pic_id=153 nein, laut http://www.mikrocontroller.net/tutorial/equipment.htm ja... hm... was mach ich denn nun  ???
- der vorwiderstand für die led ist eigentlich berechnet (2V @ 20mA) aber warscheinlich is n 1k wirklich besser (muss au garnet hell leuchten, die gibt an ob man sich in der lüfterauswahl befindet, oder net)
- die werde ich wohl mit dem ad-converter betreiben, aber da mach ich eh nochmal ganz neu ;)
- werd ich hardwaremäßig machen :)

EDIT: schaltplan ist editiert :)


Titel: Re: Atmel und 4 PWMs
Beitrag von: b0nze am Februar 11, 2005, 21:06:18
Das mit dem Reset-Pin is komplett unkritisch, ich dachte halt, so wärs besser.. dont know. Ich habs z.b. ohne Kondi und im Versuchsaufbau auch ohne Kondi.

Meine Taster hab ich auch mit der Routine entprellt, funktioniert einwandfrei und der Vorteil ist, dass der Tastendruck nur einmal erkannt wird.

Interne PullUps:
IO müssen als Eingang deklariert sein (DDRx = 0) und dann einfach PortX = 1, und schon haste ca. 10k dran.

b0nze


Titel: Re: Atmel und 4 PWMs
Beitrag von: philipp.ni am Februar 11, 2005, 21:37:51
ja, mein tastendruck wird auch nur einmal gezählt -> ich führ nur aus, wenn letzer loop-durchgang auf 0 gesetzt war. im simulator klapt alles wunderbar...

ich hab grad zum spaß mal alles in n board umgewandelt... wenn ich ätzen lass brauch ich weniger als ne halbe eurocard ;) meint ihr das krieg ich mit lochraster au hin? ;)


Titel: Re: Atmel und 4 PWMs
Beitrag von: OlafSt am Februar 11, 2005, 21:50:53
Meine Anmerkungen:


  • Die Vorwiderstände vor den BTS sind eigentlich überflüssig. In das Gate dort fließen maximal 20µA (Gate-Leckstrom). Es gibt, anders als beim Transistor, keine leitende Verbindung vom Gate zum Drain oder Source.

  • Die Tasterentprellung mit den 100nF-Pilen funktioniert bestimmt nur zufälligerweise  ;) Da muß ein RC-Glied hin (Widerstand 1K, Kondi 1uF oder besser 10uF)

  • Die Kondis am Quarz sollten besser 22pF haben, besonders bei dieser Taktfrequenz

  • Den PullUp am Reset des Mega16 würde ich auf 33K oder 47K vergrößern. Mit etwas Pech ist der 10K "zu stark" für den ISP

  • Auch ich empfehle, RX und TX freizuhalten. Und sei es nur für "den Fall der Fälle" ;D Für serielle I/O mußt Du dann aber am Quarz noch etwas ändern, mit 16MHz ist keine 100% präzise PC-taugliche Baudrate einstellbar.

  • Der LED-Vorwiderstand ist m.E. okay. Für eine Kontrollanzeige muß die LED nicht unbedingt superhell sein.




Titel: Re: Atmel und 4 PWMs
Beitrag von: b0nze am Februar 11, 2005, 21:53:23
Bei den Tastern muss nen Widerstand vor den Kondensator, glaub ich ;).. könnten sich ja auch mal andre beteiligen  ;D, weil sonst würde der mini Kondi ja genau so schnell entladen und würde flattern. Der Widerstand begrenzt den Ent/Ladestrom.

Das "FET" hat LogicLevel Input, also könnteste dir glaub die 1kR sparen.

Pass bei Eagle auf, dass du z.B. jetzt den Stützkondi beim Reset nicht auch an 5V gehängt hast.

Also ich denke, dass das gut auf Lochraster geht. Mega in die Mitte und den Rest außen rum bauen ;) etwas denken davor, dann passt das.

b0nze

p.s. kannst mir ja mal die Source als PM schicken ;)


€dit: @Olaf: Ich glaube schon, aber er braucht's ja anscheinend nicht... er macht sie doppelt kaputt, dadurch dass er low-side schaltet ;D


Titel: Re: Atmel und 4 PWMs
Beitrag von: philipp.ni am Februar 11, 2005, 23:25:35
nochmal danke :)

Ich bau das ganze modulähnlich auf, also der IC und das ISP auf dem mamaboard und dann jeweils ne verbindung zu ner anderen platine für einen port. so kann ich später leichter erweitern/ändern und muss net immer alles neu auf bauen bzw. was rauslöten.

Die sources gibs natürlich für alle, bei mir is alles open source und unterliegt der GNU Public Licence ;)
http://dls.nochwer.de/programms/uc/MicroFanControl.zip
sind 4 dateien inclusive der m16def.inc vom AVR Studio. alles gut kommentiert denke ich... viel spaß :)
ach ja:
1. das ist version 1.0! Temperatursensoren und der Deep Sleep (für das "speichern" der lüftereinstellungen) like der von Colora Luminis kommen noch
2. im simulator hat alles geklapt, ich übernehm keine garantie, dass es in hardware, geschweigedenn auf nem anderen chip funktioniert!
für was die register gut sind sieht man an den definitionen. sram ist:
0x0060 aktueller fan (0-3)
0x0061 hab ich mir für was aufgehoben, weiß aber netmehr für was
0x0062-65 ist für die fangeschwindigkeiten von 0-20.
der rest ist für den stack.
in einigen routienen werden tmp-register gesichert, die garnet gebraucht werden... kann man au rausmachen wenn man will, ich war zu faul dafür :p

cu philipp


Titel: Re: Atmel und 4 PWMs
Beitrag von: b0nze am Februar 11, 2005, 23:49:10
Na, die Source wollte ich eher um hier noch was schreiben zu können  :zunge:

Kennste den Befehl: SBIS? Das gleiche wie SBRS, nur für IO-Register.. kannste also direkt auf Pind benutzen... wenn wir dabei sind (wenn überhaupt=:
FALSCH: "in tmp1, PORTD"..
in temp1, PIND (<== ist kein Register, sondern der Zustand der Pins, oder so ähnlich stehts im finen datasheet).
Zitat von: philipp.ni $txt[176] Februar 11, 2005, 23:25:35
der rest ist für den stack.

^^ ist gut ;) wenn ich das (auf die schnelle, entschuldige mich, wenn ich falsch liege) richtig gesehen habe, dann springst du zu deinen Tastern
Code:
rcall PushMenu ;PushMenu ausführen
und zurück gehste dann:
Code:
rjmp checktaster ;Zurück
... dann wirste den ganzen Ram auch für den Stack brauchen... (mach das schnell anders, bevor Olaf das sieht ;D der haut dich windelweich...)
Nach einem RCALL kommt ein RET (vielleicht wenns passt mal nen RETI)...
Routine-Call und Subroutine-Return.. passt doch irgendwie zusammen ;)
Bei nem RCALL wird nämlich die aktuelle Adresse auf den Stack gelegt (2Byte) und mit RET wieder runtergenommen und dahin gesprungen, wo das RCALL stand. ... also, RET rein. (oder Stack-Manipulieren: 2x POP, aber das nur so für nen schlechten Stil).

Code:
ldi tmp1, 0 ;aktfan auf 0 setzen
sts aktfan, tmp1
sts 0x0062, tmp1 ;Fan-geschwindigkeiten auf 0 setzen
sts 0x0063, tmp1
sts 0x0064, tmp1
sts 0x0065, tmp1
Da gleich 2 Sachen (nix falsch, aber schönerer Stil):
(von Olaf gelernt): Erstell dir nen Register, dass immer 0 ist und eins, das immer 1 ist. dann würdeste hier schon einen befehl sparen.
2tens: mach oben ne .equ und da dann:
Code:
.equ fan_speed = 0x62
dann kannste nacher
Code:
sts fan_speed+0, tmp1 (bzw. null)
sts fan_speed+1, tmp1 (")

mehr hab ich mal nicht nachgeschaut ;) glaub aber nicht, dass das nacher auf Anhieb läuft. Klappt nie ;D

b0nze


Titel: Re: Atmel und 4 PWMs
Beitrag von: philipp.ni am Februar 12, 2005, 10:32:19
Das mit SBIS hab ich ewig gesucht und hab statt dessen dann wiederwillen den ganzen port eingelesen. als ich SBIS gefunden hab, war ich zu faul das noch zu ändern
das rcall <> rjmp kommt daher, dass ich woanders hinjumpen muss... ich hab wohl vergessen rcall au in rjmp umzuwandeln  :headcrash:
ah, ja, die lüfter muss man am anfang ja theoretisch garnet setzen, da der ram nach reset ja immer 0 ist... nur im simulator hat er die werte irgentwie beibehalten und um das programm auszuprobieren hab ich eben die kritischen stellen auf 0 gesetzt ;)
das mit den 0/1-Registern ist keine schlechte idee, v.a. wenn man noch viele register frei hat, danke für den tipp (an wen das jetzt geht, dürft ihr euch aussuchen *gg*)

was mir gestern au noch eingefallen ist: die PullUp-Widerstände sind noch net aktiviert...


Titel: Re: Atmel und 4 PWMs
Beitrag von: Freak5 am Februar 12, 2005, 13:16:28
Ich habe ne Frage-> Sind diese 4511N ICs Schieberegister? Wenn ja, dann könnte man doch solche nehmen, die man immer aneinanderhängen kann. Dann könntest du mit 3 Pins fast unendlich viele Anzeigen ansteuern ;D

Edit: Wie machst du diese geilen Schaltpläne? ???


Titel: Re: Atmel und 4 PWMs
Beitrag von: b0nze am Februar 12, 2005, 14:45:01
1tens: Nein, das sind keine Schieberegister.

2tens: Das Programm heißt Eagle von Cadsoft.de , ne kleine Version ist kostenlos.


[BTMT (Back To More Topic ;D)]
Ja, die PullUps müssen noch rein und benutz das richtige Register für die Taster... PinX, auch mit SBIS.

b0nze


Titel: Re: Atmel und 4 PWMs
Beitrag von: Freak5 am Februar 12, 2005, 16:12:33
Oh jetzt habe ichs bei Reichelt gefunden.
Ist es nicht besser die Zahlen mit dem Microcontroller zu dekodieren(genug Leistung ist doch immer da) und dann 2 Schieberegister zu benutzen? Das spart 3 Pins und fast 50c ;D


Titel: Re: Atmel und 4 PWMs
Beitrag von: philipp.ni am Februar 12, 2005, 16:23:50
warum auch einfach, wenns auch kompliziert geht, stimmts?

das sind extra decoder und treiber die für 7segment-anzeigen gemacht wurden, meinste net die sind vllt besser geeignet? in der nächsten version werden die 7segments warscheinlich eh durch n lcd ersetzt, dann spar ich sogar 4 pins :p


Titel: Re: Atmel und 4 PWMs
Beitrag von: Freak5 am Februar 13, 2005, 16:10:18
Wie das denn?


Titel: Re: Atmel und 4 PWMs
Beitrag von: b0nze am Februar 13, 2005, 16:24:22
Nen LCD braucht mindestens: D4,D5,D6,D7 + Enable + Registerwahl (DC).

Gut, manchmal rechne ich auch falsch, aber da haste was falsch gerechnet :) oder einen Aspekt herausgelassen.

b0nze


Titel: Re: Atmel und 4 PWMs
Beitrag von: philipp.ni am Februar 13, 2005, 22:07:19
ups, recht haste, hab die 2 letzten vergessen  :headcrash:
die teile sind bestellt, mal gucken wann reichelt liefert und ob alles dabei ist ;)


© 2001-2022 MODDING-FAQ FORUM | SMF
Alle Rechte vorbehalten.