Hallo @ all, ich hoffe ihr könnt mir mit meinem Programm / Problem weiterhelfen... Was habe ich vor: Ich möchte einen Kondensator mit 2mF auf 500V laden/enladen über einen 100 Ohm Widerstand. Dazu muss ich zwei Spannungen vergleichen. Wenn der Kondensator auf 500V geladen ist (Ukondensator = Uversorgung) dann soll das "Entladerelais" schalten. (Laderelais = off | Entladerelais = on) Wenn der Kondensator leer ist (Ukondensator = 0V), dann soll das Laderelais schalten. (Laderelais = on | Entladerelais = off). Wie oft der Lade / Entladeprozess passiert soll gezählt werden. Die Quellspannung kommt von einem Akku, welcher nach mehreren Ladeprozessen an Kapaziät verliert und deshalb auch weniger Versorgungsspannung hat. Deshalb muss Uversorgung auch eingelesen werden. (nicht als fester Wert) Das Programm so solange laufen bis die Versorgungsspannung auf 200V gefallen ist, dann sollen die Anzahl der Entlade/Ladeprozesse ausgegeben werden. Achja und nach jedem Lade- bzw. Entladevorgang soll 10sec gewartet werden, damit die Relais nicht zu heiß werden, da diese eigentlich per PWM angesteuert werden sollen, ich sie aber direkt mit 12V versorge. Was habe ich bisher gemacht: Ich habe ein Schaltung entworfen, welche die 500V auf 5V runterteilt und die Relais mit 5V schalten lässt. Das ganze ist natürlich sicher! Ich habe auf genügend Abstand (wegen hoher Spannung) galvanische/optische Trennung, Sicherung, usw. geachtet... Was ist das Problem: Ich habe keine Ahnung von uC's! Ich hab mir in der Firma ein STK500 bestellt und verwende derzeit den AtMega8515L. Ein paar LED's mit Assembler und C kann ich nun auch ansteuern. Das wars dann aber auch. Ich nutze zur Entwicklung --> AVR Studio 4 & WinAVR. Ich habe gemerkt, dass ich nur in C mein Programm schnell programmiert bekommen, da ich nicht allzuviel wissen über uC's habe. In C kenn ich mich aus! Wie könnt ihr mir helfen: Bitte das komplette Programm für mich schreiben :-) nene kleiner scherz! Ich bräuchte für folgende folgende Dinge hilfe: 1. Wie kann ich einen analogen Wert einlesen? und als digitalWert speichern? 2. Dieser gespeicherte Wert muss dann mit einem anderen analogen Wert vergleichen werden! Wie vergleich ich zwei Registerwerte? 3. Je nach Fall muss nun ein Relais schalten also z.B. PortB --> 00000001 (0x01) | PortB --> 10000000 (0x80) 4. Diese Vorgänge müssen gezählt werden. (laden / Entladen. Wie zähle ich sowas? 5. Es muss eine Abbruchbedingung geben --> if (Uversorgung < 200V) --> gebe Anzahl der Lade/Enladevorgänge aus. Es wär super wenn ihr mir ein paar Programmschipsel geben könntet... Danke schonmal für eure Hilfe. lg Stefan
Zu 1: Einmal in C: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Analoge_Ein-_und_Ausgabe Und einmal in ASM: http://www.mikrocontroller.net/articles/AVR-Tutorial:_ADC Zu 2: Vergleichen geht in C meistens mit == Zu 3: du musst den Port so wie von dir beschrieben beschreiben. Der Port muss vorher als Ausgang definiert sein: Einmal in C: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Zugriff_auf_Ports Und einmal in ASM: http://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen Zu 4: zB i++; in C Zu 5: Genau wie von dir beschrieben...
> Relais nicht zu heiß werden, da diese eigentlich per > PWM angesteuert werden sollen, ich sie aber direkt mit 12V versorge. Ein Relais per PWM ansteuern ist aber nicht so optimal (es sei denn, die Frequenz ist äußerst klein) > Ich habe ein Schaltung entworfen, welche die 500V auf 5V runterteilt und > die Relais mit 5V schalten lässt. Tut nichts zur Sache, aber steuerst du die Relais jetzt mit 12 oder mit 5V an?
Hallo, danke erstmal für eure Antworten. Ich werd mir die Links gleichmal angucken. Zu den Relais --> ich schließe einen uC Ausgangspin an einen Optokoppler, welcher wiederum einen FET ansteuert, welcher das Relais schalten lässt. Das ganze funktioniert also mit 5V. Also High am uC Ausgang. Bei den Relais handelt es sich um Prototypen, welche ich aus dem Musterbau bekommen habe. Die meinten zu mir die Relais werden per PWM gesteuert. Da kenn ich mich auch nicht so aus. --> bin Praktikant / Student 3. Semester <-- Grüße Stefan
>Die meinten zu mir die Relais werden per >PWM gesteuert. Da kenn ich mich auch nicht so aus. --> bin Praktikant / >Student 3. Semester <-- Hm.. Aufm Bau gabs da immer Konterlattenschablonen, oder Lufthaken...
Stefan Z. wrote:
> Was?
Die Vermutung ist, dass dich jemand in den April schicken wollte.
So wie jeder angehende Chemielaborant irgendwann mal ins Lager
geschickt wurde um 'Kapillarbürsten' zu holen, jeder Mauererlehrling
schon mal um die 'Ersatzluftblase für die Wasserwaage' geschickt
wird.
Es gibt keinen wirklichen Grund warum man ein Relais mit PWM
ansteuern sollte. Ausser vielleicht dass man nur 12V zur Verfügung
hat und die Relaisspule auf 5V ausgelegt ist. Aber selbst dann
wäre ein Treibertransistor zur Pegelanpassung die bessere Wahl,
da wesentlich weniger Aufwand.
Ah ok, hab jetzt erst gemerkt das du mich verarschen wolltest! ;-) --> Ich hab wirklich geguckt was Lufthaken sind --> http://www.stupidedia.org/stupi/Siemens_Lufthaken Naja wie auch immer. Zu denen die mir wirklich helfen wollen --> eine weitere Frage. Ich wollte für mein Projekt eigentlich ein Eval. Board der Firma Olimex verwenden. --> AVR-CAN AT90CAN128 DEVELOPMENT BOARD http://shop.olimex.eu/product_info.php?products_id=529 Kann ich den Code, welchen ich für den AtMega8515 schreibe einfach für den ATMega90Can128 weiterverwenden? Mit kleinen Änderungen natürlich... ?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.