www.mikrocontroller.net

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


Autor: Stefan Z. (derdespot)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Marius S. (lupin) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zu 1:

Einmal in C:
http://www.mikrocontroller.net/articles/AVR-GCC-Tu...

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

Und einmal in ASM:
http://www.mikrocontroller.net/articles/AVR-Tutori...


Zu 4:
zB i++; in C


Zu 5:
Genau wie von dir beschrieben...

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Stefan Z. (derdespot)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Stefan Z. (derdespot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stefan Z. (derdespot)
Datum:

Bewertung
0 lesenswert
nicht 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... 
?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.