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
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
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.
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
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...
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.
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?
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
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
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.
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.
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
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
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
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
Hi >Gegenvorschlag zum µC? Noch mal ATMega164/324/644/1284P/PA http://www.atmel.com/Images/Atmel-8272-8-bit-AVR-microcontroller-ATmega164A_PA-324A_PA-644A_PA-1284_P_datasheet.pdf MfG Spess
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
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
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.
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
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.