Forum: Mikrocontroller und Digitale Elektronik Newbiefrage, alternative zum analogen Aufbau


von Chr K. (cekey)


Lesenswert?

Hi

Hab mir ne Schaltung überlegt um Fensterheber mit Komfortfunktion zu 
Steuern, dazu ist eine Strommessung mit Abschaltung nötig usw. 
Vorhandene Module haben das nicht und sind deshalb auch nicht zulässig 
(Einklemmschutz)

nun hab ich nur eine Seite und doch schon eine so beträchtliche Menge an 
Widerständen und Transistoren das sich ernsthaft die Frage stellt ob das 
so noch Sinn hat.

Bisher hab ich um die Microcontroller noch einen Bogen gemacht, da ich 
mich damit nicht auskenne, aber das sollte sich jetzt wohl besser 
ändern.

Bitte um Hilfe bei der Auswahl der benötigten Hardware, gibt ja dann 
doch mehr als einen....

Aufgabenstellung:

-----------
alles 2x:
Taster auf, Taster Ab, Wert der Stromüberwachung analog oder durch 
vorgeschalteten Baustein digital, Endschalter
Ausgang Auf, Ausgang Ab
1x:
Signal Auf von ZV, Signal Zu von ZV, Ausgang ZV auf, Ausgang ZV zu

Dazu muss ich Impulszeiten auswerten können und getimte Impulse ausgeben 
können.

Der Prozessor darf nicht Stur in einen Thread hängen, hab ja 2 Fenster 
die müssen beide gleichzeitig bedient werden können
----------------

gegen noch freie Ein und Ausgänge hätt ich garnix, wenn ich erst mal im 
Thema bin wird sicher was dazukommen


Mit SPS Steuerungen kann ich schon, falls es hier synergieeffekte in der 
Programmierung gäbe
Die SPS fällt wegen der Startzeit weg, hab das Problem das die Elektonik 
entweder so niedrigen Stromverbrauch haben muss daß die mir die Batt 
nicht leersaugt oder Sie wird erst durch Schalterbetätigung mit Strom 
versorgt, Dh muss sofort in dem Moment der Stromversorgung auch korrekt 
arbeiten

mfg ck

von San L. (zwillingsfreunde)


Lesenswert?

Christian K. schrieb:
> Taster auf, Taster Ab, Wert der Stromüberwachung analog oder durch
> vorgeschalteten Baustein digital, Endschalter
> Ausgang Auf, Ausgang Ab
> 1x:
> Signal Auf von ZV, Signal Zu von ZV, Ausgang ZV auf, Ausgang ZV zu
>
> Dazu muss ich Impulszeiten auswerten können und getimte Impulse ausgeben
> können.

Kann so ziemlich jeder Controller. Musst nur schauen dass er genug 
Anschlüsse hat.

Christian K. schrieb:
> Der Prozessor darf nicht Stur in einen Thread hängen, hab ja 2 Fenster
> die müssen beide gleichzeitig bedient werden können

Das kann der Controller nicht beeinflussen. Für einen fliessenden 
Programmablauf ist der Programmierer selbst zuständig.

Wird allerdings nicht ganz einfach zum Programmieren, wenn du keine 
Erfahrung mitbringst.

: Bearbeitet durch User
von MaWin (Gast)


Lesenswert?

Christian K. schrieb:
> Bitte um Hilfe bei der Auswahl der benötigten Hardware

Prozessor: ATmega8, eventuell Arduino

Motorsteuerung: Entweder 4 KFZ Relais oder 2 Vollbrücken BTS7741 falls 
deren 10A bei blockiertem Motor reichen (vermutlich nicht)
http://www.pollin.de/shop/dt/NzQwOTk4OTk-/Bauelemente_Bauteile/Aktive_Bauelemente/IC/BTS7741G.html

Sromversorgung: KFZ tauglicher 5V Regler.
http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23

Sensor: Widerstand in Masseletung der Brücke,

                     +-----------+-- +12V
                     |           |
                     o           o
                       /o-(M)-o\
                     o/         \o
                     |           |
                     +-----------+
                     |
uC-Eingang --+--10k--+
Komparator   |       |
            100nF   0.1 Ohm (10A = 1V am Komparatoreingang)
             |       |
             +-------+-- Masse

Eingänge von Tastern: gefiltert gegen Störungen

               +--|>|-- VCC
               |
Eingang --10k--+--1k--| uC
               |
               +--|<|-- GND
               |
             10nF
               |
              GND

Das Programm läuft in einer Hauptschleife und reagiert darin auf 
Ereignisse

char motor1,motor2; // 1=aufwärts, 0=stehen, -1=abwärts
loop()
{
    if(buttonPressedDown(MOTOR1AUF)) if(motor1==1) motor1=0; else 
motor1++;
    if(buttonPressedDown(MOTOR1AB)) if(motor1==-1) motor1=0; else 
motor1--;
    if(buttonPressedDown(ZV1AUF)) if(motor1==1) motor1=0; else motor1++;
    if(buttonPressedDown(ZV1AB)) if(motor1==-1) motor1=0; else motor1--;
    if(digitalRead(MOTOR1OBEN)&&motor1==1) motor1=0;
    if(digitalRead(MOTOR1UNTEN)&&motor1==-1) motor1=0;
    if(digitlaRead(MOTOR1OVERCURRENT) motor1=0;
    digitalWrite(MOTOR1DIR,motor1<0);
    digitalWrite(MOTOR1ON,motor1!=0);

    if(buttonPressedDown(MOTOR2AUF)) if(motor2==1) motor2=0; else 
motor2++;
    if(buttonPressedDown(MOTOR2AB)) if(motor2==-1) motor2=0; else 
motor2--;
    if(buttonPressedDown(ZV2AUF)) if(motor2==1) motor2=0; else motor2++;
    if(buttonPressedDown(ZV2AB)) if(motor2==-1) motor2=0; else motor2--;
    if(digitalRead(MOTOR2OBEN)&&motor2==1) motor2=0;
    if(digitalRead(MOTOR2UNTEN)&&motor2==-1) motor2=0;
    if(digitlaRead(MOTOR2OVERCURRENT) motor2=0;
    digitalWrite(MOTOR2DIR,motor2<0);
    digitalWrite(MOTOR2ON,motor2!=0);

    delay(10);
}

Das Programm ist also ganz einfach, WENN es dumm ist. Dumm heisst: Der 
Überstrom, der den Motor ausschaltet, kann gar nicht richtig erfasst 
werden, entweder ist er zu niedrig und der Motor erreicht ihn bei jedem 
Anlaufen, oder er ist zu hoch und der Motor erreicht ihn nie. Man muss 
die Schaltschwelle anpassen, bei Anlaufen den Motors darf man kurz nicht 
auf Überstrom reagieren, hinterher muss die Schaltschwelle kleiner sein, 
im Winder oder bei zähen Gummis an der Schibe kann sich der Strom 
während des Laufs verändern und man kann nicht bie einer festen Grenze 
stoppen, sondern muss bei einem ungewöhnlichen Anstieg stoppen. Daher 
ist dort die Auswertung des Analogwerts wohl passender.

Ebenso fehlt dem Programm noch eine Unterscheidung, ob ein Knopf kurz 
gedrückt wurde oder lang. Aber auch damit wird es gerade mal doppelt so 
lang, und durch eine geschickte Funktion der Aktionen pro Motor könnte 
man es in der Länge wieder halbieren.

von Chr K. (cekey)


Lesenswert?

jetzt wird´s interessant....

was ist das für eine Programmiersprache?

erinnert ein bisschen an Php oder Dos Programmierung die ich in 
Grundlagen auch drin hab

von BLCtrl (Gast)


Lesenswert?

Christian K. schrieb:
> was ist das für eine Programmiersprache?

Vergewaltiges C von Arduino.

von Chr K. (cekey)


Lesenswert?

MaWin schrieb:

> bei Anlaufen den Motors darf man kurz nicht
> auf Überstrom reagieren

Da hab ich eh einen manuellen Override eingeplant, d.h. solange die 
Taste gedrückt ist fährt das Fenster, egal was Endschalter und 
Stromüberwachung sagen.
Das ginge aber einfach mit einer Diode zwischen Taster und Relais. 
Sicher aber auch programmiertechnisch.



> Ebenso fehlt dem Programm noch eine Unterscheidung, ob ein Knopf kurz
> gedrückt wurde oder lang. Aber auch damit wird es gerade mal doppelt so
> lang, und durch eine geschickte Funktion der Aktionen pro Motor könnte
> man es in der Länge wieder halbieren.


genau da wird´s noch kompliziert, die Automatik soll nur bei einem 
kurzem Impuls am FH-Schalter anspringen, im Gegenteil dazu nur bei einem 
langem Impuls am ZV-Eingang

hab da was gelesen über Timer, da wär nur einer im Prozessor. Hab aber 
mehrere Sachen die ich gern zeitgleich timen würde, wie z.b. die 
Eingänge der FH Taster.
Relevant oder wird durch programmierung gelöst?


hab auch gesehn der Proz braucht eigentlich verschwindend Strom, könnte 
also immer an bleiben...

von Frank (Gast)


Lesenswert?

Christian K. schrieb:
> hab da was gelesen über Timer, da wär nur einer im Prozessor. Hab aber
> mehrere Sachen die ich gern zeitgleich timen würde, wie z.b. die
> Eingänge der FH Taster.
> Relevant oder wird durch programmierung gelöst?

Da hast du aber einen kleinen Controller gefunden, die meisten haben 2, 
3 oder noch mehr Hardwaretimer.
Aber auch mit einem Timer kann sehr einfach mehrere Dinge zeitlich 
steuern. Man verwendet den einen Timer als Zeitbasis und macht den Rest 
per Software abhängig vom Zählerstand des Timers.

von Route_66 H. (route_66)


Lesenswert?

Christian K. schrieb:
> hab da was gelesen über Timer, da wär nur einer im Prozessor. Hab aber
> mehrere Sachen die ich gern zeitgleich timen würde,

Hallo!
Wie würdest Du eine Gebrauchsanleitung umsetzen, in der steht:
"...jetzt Gemisch 20 Sekunden umrühren, 5 Sekunden nach Rührbeginn 7 
Sekunden lang kaltes Wasser nachfüllen..." - Du hast aber nur eine Uhr 
mit Sekundenzeiger und der steht schon auf 31?

von spess53 (Gast)


Lesenswert?

Hi

Da gibt es eine nette App-Note samt Software von ATMEL:

http://www.atmel.com/Images/doc7559.pdf

http://www.atmel.com/Images/AVR480.zip

MfG Spess

von Chr K. (cekey)


Lesenswert?

Route 66 schrieb:
> Christian K. schrieb:
>> hab da was gelesen über Timer, da wär nur einer im Prozessor. Hab aber
>> mehrere Sachen die ich gern zeitgleich timen würde,
>
> Hallo!
> Wie würdest Du eine Gebrauchsanleitung umsetzen, in der steht:
> "...jetzt Gemisch 20 Sekunden umrühren, 5 Sekunden nach Rührbeginn 7
> Sekunden lang kaltes Wasser nachfüllen..." - Du hast aber nur eine Uhr
> mit Sekundenzeiger und der steht schon auf 31?

das ist einfach

komplizierter ist es wenn der Timer überläuft und wieder von 1 anfängt

von San L. (zwillingsfreunde)


Lesenswert?

Christian K. schrieb:
> das ist einfach
>
> komplizierter ist es wenn der Timer überläuft und wieder von 1 anfängt

Wieso ist das komplizierter? Bei einem Überlauf kann ein Interrupt 
ausgelösst werden, dann inkrementierst du eine Variable um 1 und zählst 
somit die Überläufe. Da du ja weisst wieviel eine ganze "Runde" ist, 
kannst du dann ganz simpel Addieren & Multiplizieren.

von MaWin (Gast)


Lesenswert?

Christian K. schrieb:
> hab da was gelesen über Timer
> Relevant oder wird durch programmierung gelöst?

Überflüssig, die loop bildet mit 10ms von selbst beliebig viele Timer, 
nicht hochpräzise, aber ausreichend. Man braucht nur für jeden einen 
Zähler der die Schleifendurchgänge zählt.

von Chr K. (cekey)


Lesenswert?

weil ich grad von Draussen komm....

konnte nix zu der Maximalen Betriebstemperatur finden, 50Grad hast ja 
gleich im Auto...


Ps. nochwas

wär es nicht Sinnvoll statt der Dioden/Widerstände/Kondensatoren im 
Eingangs und Ausgangsbereich einfach Optokoppler zu verwenden?

richtige HF geht da nicht drüber, Spannungsspitzen und Negativspannungen 
sind weg, dazu noch galvanisch getrennt womit die Bindung gegen Masse 
fällt

mach das bei meinen Low-Tec Bausteinen mit Transistoren derzeit schon so 
mit Erfolg
Ausgangsseitig gibt´s auch noch welche mit Mosfet

Spricht da bei µC was dagegen?

: Bearbeitet durch User
von Chr K. (cekey)


Lesenswert?

noch zu den obrigen offenen Fragen:

was wär mit dem?
http://www.voelkner.de/products/24500/Microcontroller-Atmega8535-16pu.html

der scheint ja so ziemlich alles zu können... und bei 3 Euro ist nix 
verloren, da kostet das Drumherum das zigfache

von spess53 (Gast)


Lesenswert?

HI

>noch zu den obrigen offenen Fragen:

>was wär mit dem?
>http://www.voelkner.de/products/24500/Microcontrol...

Du scheinst auf Oldtimer zu stehen. Voelkner anscheinend auch.

Nimm etwas aus der Reihe ATMega164/324/644/1284P/PA.

MfG Spess

von Chr K. (cekey)


Lesenswert?

ich nix wissen, ich andere Baustelle...

fand den Preis und die Funktionen interessant, aber hast recht, das Auto 
in dem das alles verbaut wird ist Bj91.

Völkner ist übrigends Conrad, nur billiger. Hab schon bei beiden 
bestellt, kommt offensichtlich aus dem gleichen Lager.

Gegenvorschlag zum µC?

wollt halt schon was in dem Gehäuse, weil sich´s bedrahtet einfach 
leichter rumprobieren lässt
Endprodukt ist dann wohl eher SMD

mfg ck

von spess53 (Gast)


Lesenswert?


von Chr K. (cekey)


Lesenswert?

Thema Temperatur kann ich nun selbst beantworten, 85 Grad 
Arbeitstemperatur, manche auch 105

das sollte doch für´s Auto reichen

Eine Bauanleitung mit Optokopplern hab ich auch schon gefunden, spricht 
also wohl nix dagegen

Ich mach mir dann mal Gedanken, probier ein bisschen rum und Stell das 
dann mal als Projekt ein, denn ohne Eure Hilfe wird das wohl nix...

Danke also vorerst mal

von Chr K. (cekey)


Lesenswert?

Den µC hab ich mir jetzt rausgesucht, etwas Overkill wohl, aber der 
Preisunterschied ist ja nicht gerade gravierend:

ATMEGA644PA-ANR

der macht noch bei 105 Grad, ich lass Ihn wohl langsam laufen mit 2,5v, 
evtl komm ich dann mit einem mA hin was im Autobereich hinzunehmen ist 
als Dauerverbrauch

Ne Saubere Spannungsversorgung kriegt er noch mit Filtern und Dioden und 
Ableitern, hab gelesen 12v Boardnetz ist mit allen Störeinflüssen voll.

http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23

mfg ck

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

MaWin schrieb:
> delay(10);
Wieso das?
Meine Programme laufen immer mit Vollgas durch die Hauptschleife. Wenn 
irgendetwas mit Zeiten passieren soll, dann gibt's einen 
Millisekundenzähler oder beim Arduino die Funktion millis().

Route 66 schrieb:
> Wie würdest Du eine Gebrauchsanleitung umsetzen, in der steht:
> "...jetzt Gemisch 20 Sekunden umrühren, 5 Sekunden nach Rührbeginn 7
> Sekunden lang kaltes Wasser nachfüllen..." - Du hast aber nur eine Uhr
> mit Sekundenzeiger und der steht schon auf 31?
Dann hast du vorher schon einen Fehler gemacht und zuviel Zeit mit was 
Anderem vertrödelt. Es muss einfach sichergestellt sein, dass die 
Hauptschleife immer schnell genug durchlaufen wird. So funktioniert auch 
eine SPS, dort nennt man das dann Zykluszeit.

von Chr K. (cekey)


Lesenswert?

So trivial ist das aber nicht mit dem Millisekundenzähler, oder?

das Delay wär so blöd nicht wenn man die Schleifendurchläufe wertet 
kommt sonst ganz was anderes raus wenn man mal was im Programm ändert

Das mit den Zählen der Schleifen hab ich beim ADC wegen Jitter und auch 
bei Zeitfunktionen wie dem Tastenentprellen gefunden, wenn sich hier 
aber die Zykluszeit stark ändert ist das blöd

Deswegen auch diese "Zwangsbremse" bei der SPS, woher ich die kenne

Je mehr man sich einliest merkt man das Hardwaremäßig in der SPS auch 
nur ein µC steckt, nur die SPS kostet ab 200€, der µC ab 5....

: Bearbeitet durch User
von STK500-Besitzer (Gast)


Lesenswert?

Christian K. schrieb:
> So trivial ist das aber nicht mit dem Millisekundenzähler, oder?

doch.

Fang erst an, dich mit den Grundfunktionen des Mikrocontrollers zu 
beschäftigen. Dazu gibt es ein Tutorium auf dieser Seite.

von Route_66 H. (route_66)


Lesenswert?

Lothar Miller schrieb:
> Route 66 schrieb:
>> Wie würdest Du eine Gebrauchsanleitung umsetzen, in der steht:
>> "...jetzt Gemisch 20 Sekunden umrühren, 5 Sekunden nach Rührbeginn 7
>> Sekunden lang kaltes Wasser nachfüllen..." - Du hast aber nur eine Uhr
>> mit Sekundenzeiger und der steht schon auf 31?
> Dann hast du vorher schon einen Fehler gemacht und zuviel Zeit mit was
> Anderem vertrödelt.

Hallo!
Du hast nicht begriffen, was ich dem TO mit meiner Analogie erklären 
wollte: man kann auch mit nur EINEM durchlaufenden Timer (hier der 
Sekundenzeiger) mehrere Zeiten unabhängig timen.

von Chr K. (cekey)


Lesenswert?

STK500-Besitzer schrieb:

> doch.

Es würde natürlich das Ganze vereinfachen einen Link mit anzubringen 
oder die Funktion einfach zu benennen.

denn das hier:

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Die_Timer_und_Z%C3%A4hler_des_AVR

zählt bei mir schon zu kompliziert

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.