- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 60

Thema: Mehrere Servo-Signale einlesen, ggf. manipulieren, ausgeben

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    74
    Beiträge
    11.077
    Zitat Zitat von Bomberpilot Beitrag anzeigen
    Idee:
    ... mit 2 bzw. mehr kleinsten µC auswerten.
    Geändert von PICture (18.12.2014 um 07:59 Uhr)
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    25.10.2010
    Beiträge
    26
    Zitat Zitat von PICture Beitrag anzeigen
    ... mit 2 kleinsten µC auswerten.
    Ein- und Ausgabe zu trennen würde ich noch mitmachen.
    Die Eingabe sollte dann aber schon einer alleine machen. Sonst verschwende ich ja mehr Rechenzeit am Daten synchronisieren als an allem anderen

  3. #3
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    74
    Beiträge
    11.077
    Sorry, aber für mich ist heutzutage ein kleinster 8-pinner in SMD, wie ein "pull up". Ausserdem könnten sie gleich die Signale manipulieren und ausgeben.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.242
    Beide Flanken sind in diesem Fall gar nicht nötig. Die fallende Flanke des einen Kanals entspricht zeitlich der Steigenden des nächsten.
    Das stimmt so nicht ganz.
    Nach dem letzten Kanal und am Anfang des ersten Kanal ist eine Pause von mindestens 4ms.
    Aus dieser Pause heraus wird im Empfänger der Start eines neuen Pulspaketes ermittelt.

    Du kannst alle InterruptQuellen eines AVR Controllers nutzen die von einem externen Pin aus angesteuert werden können.
    Also INT0, INT1, ICP, Comperator. Wenn Du einen Controller findest der 8 solcher Interruptquellen hat, kannst Du die verwenden.
    Wenn nicht bleibt Dir noch die Möglichkeit mit den Pin Change Interrupts wie oben beschrieben.
    Ein möglicher Kandidat wäre hier der ATMEGA88. Guck mal ins Datenblatt ab Seite 69.
    Um überschneidungen bei den Interrupt Flags zu vermeiden würde ich für die geraden Kanäle den PCINT1 und für die ungeraden Kanäle den PCINT2 verwenden.
    Somit wird der gleiche Interrupt maximal 1mal pro Millisekunde aufgerufen.
    Das sind 20000 Taktzyklen. Da in dieser Zeit ja 2mal der Pinchange aufgerufen wird hat jeder dieser Interrupts 10000 mögliche Taktzyklen. Das sollte auch für umfangreichere Auswertungen ausreichen.
    Der TCNT Wert, sowie die Zustände der Ports sollten ganz am Anfang der Interruptroutine eingelesen werden.
    Das sollte den Jitter verringern.
    Die Impulsausgabe selber könnte man mit Comparematch Interrupts machen.
    Man zählt in den Comparematch Interrupts eine Variable hoch und lädt in das Comparematch Register den Wert für den nächsten Potentialwechsel ( TCNT + gewünschter Änderungspunkt ).
    Dann brauchst Du nur noch per Swich Case Anweisung abhängig von der Zähl Variable das Ausgangssignal nach 1 oder 0 zu setzen.
    Um die Reaktionszeiten möglichst kurz zu halten müsste man einen 20MHz Quarz verwenden und eventuell auch die Interruptroutinen in Assembler schreiben und die Register Sicherung im Interrupt optimieren.

    Das wäre meine Lösung des Problems, wie das Timing hinhaut kannst Du mit dem Simulator vom AVR Studio 6.xx austesten.
    Geändert von wkrug (18.12.2014 um 10:23 Uhr)

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    25.10.2010
    Beiträge
    26
    Zitat Zitat von wkrug Beitrag anzeigen
    Du kannst alle InterruptQuellen eines AVR Controllers nutzen die von einem externen Pin aus angesteuert werden können.
    Also INT0, INT1, ICP, Comperator. Wenn Du einen Controller findest der 8 solcher Interruptquellen hat, kannst Du die verwenden.
    Wenn nicht bleibt Dir noch die Möglichkeit mit den Pin Change Interrupts wie oben beschrieben.
    Wenn ich mir die 6 Eingänge über 2 Diodenmatrixen auf nur noch 2 Kanäle reduziere, wird es doch gar nicht nötig so viele Interrupts zu nutzen. Dann reichen mir ja 2. Dann muss nur in der Software mitgezählt werden bei welchem Kanal wir sind, und bei der langen Pause alles zurückgesetzt werden.

    Außerdem reicht es bis auf den letzten Impuls, die positive Flanke zu triggern. Und durch den Zähler weis ich ja, wann ich bei der letzten angelangt bin, und kann den INT ganz einfach auf fallen umstellend.

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.242
    Wenn ich mir die 6 Eingänge über 2 Diodenmatrixen auf nur noch 2 Kanäle reduziere, wird es doch gar nicht nötig so viele Interrupts zu nutzen. Dann reichen mir ja 2. Dann muss nur in der Software mitgezählt werden bei welchem Kanal wir sind, und bei der langen Pause alles zurückgesetzt werden.
    Das ist natürlich auch ne gute Lösung und vermutlich sogar noch platzsparender.

    Allgemein muss man natürlich dann aufpassen, das sich die Ausgangssignale nicht überschneiden.
    Sprich egal wie man es macht wird es nicht mit allen Empfängern funktionieren.

    Vieleicht wär es auch sinnvoll dem ersten Kanal einen eigenen Interrupt zu geben, damit man sicher eine Synchronisation bekommt.

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    25.10.2010
    Beiträge
    26
    Zitat Zitat von wkrug Beitrag anzeigen
    Allgemein muss man natürlich dann aufpassen, das sich die Ausgangssignale nicht überschneiden.
    Sprich egal wie man es macht wird es nicht mit allen Empfängern funktionieren.

    Vieleicht wär es auch sinnvoll dem ersten Kanal einen eigenen Interrupt zu geben, damit man sicher eine Synchronisation bekommt.
    Korrekt, war aber auch nie mein Anspruch mit jedem Empfänger zu funktionieren, sondern mit meinem
    Hier kommen die Servopulse direkt nacheinander ohne Pause, deshalb auch 2 Diodenmatrixen (Ch1,3,5 und Ch2,4,6)
    Werde ich heute Abend auf jeden Fall mal ausprobieren, wie das dann mit 2 INTs funktioniert.

    Die Sync-Pause wird rechnerisch im Worst-Case "nur" 8ms lang sein (6*2sek.), das sollte sich SICHER detektieren lassen denke ich.
    Also ist ein separater INT für Ch1 eher nicht notwendig.

    Gruß Basti

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    67
    Beiträge
    2.435
    Hallo Bombi,

    Mit 2 ICs bekommst du das Ganze auf einen Eingang:


    Code:
    
       -                   74x27
     -- ---------    1 -     __        74x02     74x02
         -              ----\  \                  __
     ---- -------    3 ------|  |o-.-------------\  \
            -           ----/__/   |  .-\  \      |  |o---.
     ------- ----    5 -           '--'  |  |o---/__/     |
                                       -/__/              | 74x27
                                                          |  __
                                                          '-\  \
                           74x27                          .--|  |o-
                     2 -     __        74x02     74x02    |-/__/
                        ----\  \                  __      |
                     4 ------|  |o---------------\  \     |
                        ----/__/   |  .-\  \      |  |o---'
                     6 -            ---  |  |o- -/__/
                                       -/__/
    (created by AACircuit v1.28.6 beta 04/19/05 www.tech-chat.de)
    Du bekommst für jede Flanke einen Nadelimpuls am Ausgang (Je nach Logikfamilie 4-10ns).
    Um die Impulse zu verlängern muss am Ausgang der beiden Inverter noch ein C gegen Masse, bzw. ein RC-Glied dazwischen.

    Etwas Aufwändiger wäre es ein Monoflop am Ausgang nachzuschalten.

    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    25.10.2010
    Beiträge
    26
    Zitat Zitat von Peter(TOO) Beitrag anzeigen
    Du bekommst für jede Flanke...
    Auch die negativen? Sonst kann ich das Ende von Ch6 nicht detektieren

    EDIT: Wenn ich drüber nachdenke.... Ja für jede Flanke :-D
    Hab zum Glück beide grad zur Hand, kann ich also nach dem Versuch mit der Diodenmatrix auch nochmal testen.
    Geändert von Bomberpilot (18.12.2014 um 11:31 Uhr)

Ähnliche Themen

  1. Mehrere RC Signale einlesen und mehrere Servos ausgeben
    Von R2D2 Bastler im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 74
    Letzter Beitrag: 10.01.2022, 08:35
  2. RC-Signal einlesen verändern und wieder ausgeben.
    Von DanielSan im Forum Arduino -Plattform
    Antworten: 1
    Letzter Beitrag: 21.03.2013, 11:58
  3. Atmel128 Spannungen einlesen und Ausgeben (Display3000)
    Von Gantenbein im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 31.08.2007, 21:41
  4. Mehrere Signale umschalten
    Von flexxo im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 25.02.2007, 13:56
  5. Servoimpulse einlesen und ausgeben
    Von moelski im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 21.08.2006, 07:24

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress