Forum: Compiler & IDEs 500V A/D Wandlung + Relais schalten --> ATMega8515


von Stefan Z. (derdespot)


Lesenswert?

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

von Marius S. (lupin) Benutzerseite


Lesenswert?

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...

von gast (Gast)


Lesenswert?

> 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?

von Stefan Z. (derdespot)


Lesenswert?

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

von Matthias L. (Gast)


Lesenswert?

>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...

von Stefan Z. (derdespot)


Lesenswert?

Was?

von Karl H. (kbuchegg)


Lesenswert?

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.

von Stefan Z. (derdespot)


Lesenswert?

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
Noch kein Account? Hier anmelden.