Seiten: 1 2 [3] 4
|
 |
|
Autor
|
Thema: Atmel und 4 PWMs (Gelesen 25747 mal)
|
philipp.ni
Dremelfreund

Karma: +0/-0
Offline
Geschlecht: 
Beiträge: 100

Ich liebe dieses Forum!
|
danke vielmals  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/m...FanControll.jpg
Big Thx schonmal an alle die mir hier weitergeholfen haben und an die, die es noch werden. philipp
|
|
|
Gespeichert
|
|
|
|
b0nze
Gast
|
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, sonst Tiefpass: Widerstand, Kondi.
Nur zur Anregung
b0nze
|
|
|
Gespeichert
|
|
|
|
philipp.ni
Dremelfreund

Karma: +0/-0
Offline
Geschlecht: 
Beiträge: 100

Ich liebe dieses Forum!
|
danke vielmals... und wie immer super schnell 
- 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/phpB....php?pic_id=153 nein, laut http://www.mikrocontroller.net...l/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
|
|
« Letzte Änderung: Februar 11, 2005, 20:52:41 von philipp.ni »
|
Gespeichert
|
|
|
|
b0nze
Gast
|
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
|
|
|
Gespeichert
|
|
|
|
philipp.ni
Dremelfreund

Karma: +0/-0
Offline
Geschlecht: 
Beiträge: 100

Ich liebe dieses Forum!
|
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?
|
|
|
Gespeichert
|
|
|
|
|
b0nze
Gast
|
Bei den Tastern muss nen Widerstand vor den Kondensator, glaub ich .. könnten sich ja auch mal andre beteiligen  , 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
|
|
« Letzte Änderung: Februar 11, 2005, 21:55:57 von b0nze »
|
Gespeichert
|
|
|
|
philipp.ni
Dremelfreund

Karma: +0/-0
Offline
Geschlecht: 
Beiträge: 100

Ich liebe dieses Forum!
|
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/programm...oFanControl.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
|
|
|
Gespeichert
|
|
|
|
b0nze
Gast
|
Na, die Source wollte ich eher um hier noch was schreiben zu können 
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).
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
rcall PushMenu ;PushMenu ausführen
und zurück gehste dann:
rjmp checktaster ;Zurück
... dann wirste den ganzen Ram auch für den Stack brauchen... (mach das schnell anders, bevor Olaf das sieht 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).
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:
.equ fan_speed = 0x62 dann kannste nacher
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 
b0nze
|
|
|
Gespeichert
|
|
|
|
philipp.ni
Dremelfreund

Karma: +0/-0
Offline
Geschlecht: 
Beiträge: 100

Ich liebe dieses Forum!
|
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  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...
|
|
|
Gespeichert
|
|
|
|
Freak5
Dremelfreund

Karma: +0/-0
Offline
Geschlecht: 
Beiträge: 139

|
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 
Edit: Wie machst du diese geilen Schaltpläne?
|
|
|
Gespeichert
|
|
|
|
b0nze
Gast
|
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 )] Ja, die PullUps müssen noch rein und benutz das richtige Register für die Taster... PinX, auch mit SBIS.
b0nze
|
|
|
Gespeichert
|
|
|
|
Freak5
Dremelfreund

Karma: +0/-0
Offline
Geschlecht: 
Beiträge: 139

|
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
|
|
|
Gespeichert
|
|
|
|
philipp.ni
Dremelfreund

Karma: +0/-0
Offline
Geschlecht: 
Beiträge: 100

Ich liebe dieses Forum!
|
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
|
|
|
Gespeichert
|
|
|
|
Freak5
Dremelfreund

Karma: +0/-0
Offline
Geschlecht: 
Beiträge: 139

|
Wie das denn?
|
|
|
Gespeichert
|
|
|
|
Seiten: 1 2 [3] 4
|
|
|
|
|