- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 10

Thema: Alter Motor-Controller mit PIC16F84

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist Avatar von witkatz
    Registriert seit
    24.05.2006
    Ort
    NRW
    Alter
    54
    Beiträge
    553
    Blog-Einträge
    17
    Im Programmiermodus (13V an MCLR) wird der Speicher des PIC seriell über RB6/RB7 beschrieben. Das macht man normalerweise nicht händisch sondern mit einem Programmer, um eine neue "Firmware" in den PIC zu flashen. Das hat also mit deinem Adressieren über RA1 bis RA3 nichts zu tun. Das Adressieren über RA1 bis RA3 ist ein Teil der Anwendung, die auf dem PIC läuft.

    Wenn die Adresse über RA1 bis RA3 nach einem MCLR - Reset eingelesen werden soll (und wahrscheinlich im EEPROM gespeichert), dann muss der MCLR ausgeführt werden -> MCLR kurz auf Masse ziehen.

    Den Quellcode hast du wahrscheinlich auch nicht, oder? Sonst könnte man die Funktion reverse engineeren. Leider sieht man den Rest der Schaltung nicht, wie der MCLR verschaltet ist. Also mal spekulativ angenommen, dass der MCLR Pin des PIC über einen Widerstand auf Masse liegt, dann wird der Reset ausgeführt, wenn der Jumper gezogen wird. Also mein Vorschlag zum ausprobieren: Adresse jumpern, P-Jumper ziehen, P-Jumper stecken, ein paar Sekunden warten, Adressjumper entfernen und gut ist. Ist der P-Jumper gesetzt (und bleibt gesetzt!) und der MCLR Pin liegt auf 5V, dann sollte der PIC normal arbeiten.

    Gruß
    witkatz

  2. #2
    Hallo witkatz,

    vielen Dank für deine Antwort. Ich hab das mal eben probiert, aber leider zeigt dieses Vorgehen keine Veränderung.

    Hier mal der ganze Schaltplan, so wie er überliefert ist:
    Klicke auf die Grafik für eine größere Ansicht

Name:	IMG_1883 - Kopie.jpg
Hits:	13
Größe:	60,9 KB
ID:	26452

    Leider habe ich nur den Schaltplan, nicht aber den Source-Code. Der ist leider nicht mehr zu haben.

    MfG
    Der Eisvogel

  3. #3
    Erfahrener Benutzer Roboter-Spezialist Avatar von witkatz
    Registriert seit
    24.05.2006
    Ort
    NRW
    Alter
    54
    Beiträge
    553
    Blog-Einträge
    17
    Der P-Jumper zieht wirklich nur den MCLR auf 5V, damit im laufenden Betrieb kein Reset möglich ist. Zum Programmieren mit einem Programmer muss der Jumper gezogen werden, ansonsten bleibt er drauf.
    Über die Adress-Jumper an RA1 bis RA3 wird wohl die Adresse eingestellt. Wie kommst du darauf, dass der "Controller die Adresse irgendwie einlernen muss"? Mir fehlt in der Schaltung ein Auslöser für das Einlernen. Passiert das vielleicht automatisch durch Power-on-Reset? Also aus, Adresse jumpern, Ein/Aus, Adressjumper entfernen, einschalten und alles ist gut? Oder sind die Adressjumper invertiert, alle haben jetzt Adresse 7 und laufen gemeinsam im Testlauf? Oder kommt über den Bus ein Adressier-Befehl?
    Ohne eine Funktionsbeschreibung ist das alles nur geraten...

  4. #4
    Hallo witkatz,

    ich habe hier ein Set Motoren, die von 1 bis 6 bereits durchadressiert sind. Diese lassen sich durch Befehle im Bussystem ansprechen. Die Befehle von 0x00 bis 0x07 gelten für alle Motoren. Ab 0x08 stehen die letzten drei Bits für den zu addressierenden Motor. Da reagiert also nur noch jener, der mit der entsprechenden Adresse eingelernt wurde. Wenn ich den Befehl 0x52 (0b01010010) über das Bus-System schicken, dann dreht sich Motor zwei (0b010) nach links. Die anderen Motoren, die ich hier noch liegen habe befinden sich alle im Testlauf. Lege ich auf die Daten- oder Taktleitung ein Null-Signal, dann dreht der Motor sich entsprechende links oder rechts rum. D. h., die Motoren reagieren noch gar nicht auf das Bus-System. Bei den bereits adressierten Motoren sind die Jumper alle nicht gebrückt. Deswegen gehe ich davon aus, dass man es irgendwie einlernen muss, sonst würden sie ja nicht wissen auf welche Adresse sie reagieren müssen. Wenn ich die Jumper also setze und den Controller anschalte, passiert aber leider nichts.

    Gibt es bei so einem PIC eventuell die Möglichkeit den Speicher wieder auszulesen um somit an den Source zu kommen?

    MfG
    Der Eisvogel

  5. #5
    Erfahrener Benutzer Roboter-Spezialist Avatar von witkatz
    Registriert seit
    24.05.2006
    Ort
    NRW
    Alter
    54
    Beiträge
    553
    Blog-Einträge
    17
    Zitat Zitat von Der Eisvogel Beitrag anzeigen
    Wenn ich die Jumper also setze und den Controller anschalte, passiert aber leider nichts.
    Was passiert wenn du genau das tust, danach ausschaltest, Jumper ziehst und wieder einschaltest?
    Meine Idee war, dass das Adressieren vielleicht nach dem Power-On-Reset automatisch geschieht.
    Ich nehme an, dass die Befehlsliste keinen Adressier-Befehl enthält?

    Ja, man kann versuchen den Programmspeicher mit einem Programmer auszulesen und zu disassemblieren, wenn Code Protection nicht aktiviert wurde.

  6. #6
    Hallo witkatz,

    mein derzeitiges Vorgehen:
    1. Plus und Minus des Motor-Controllers an GND hängen (zum vollständigen Entladen der Elektronik
    2. Jumper setzen
    3. Controller anschalten
    4. Kurz warten
    5. Controller ausschalten
    6. Jumper ziehen
    7. Controller einschalten


    Wenn ich diese Schritte durchführe schaffe ich es, dass der Controller nicht mehr auf den Testlauf reagiert, aber auch auf keine anderen Befehle über den Bus. Es gibt ein paar Befehle, worauf er dann doch reagiert, aber da geht er dann wieder zurück in den Testlauf. Es scheint also so, als ob es doch einen Befehl geben muss, der dem Controller quasi bestätigt, dass er jetzt eine neue Adresse hat. Der Befehl scheint aber nicht gelistet zu sein. Also heißt es wohl ausprobieren. Oder hast du noch eine andere Idee?

    PS: Was mir grad noch einfällt, dass dieses Prozedere nur jedes zweite Mal funktioniert.

    MfG
    Der Eisvogel

  7. #7
    Erfahrener Benutzer Roboter-Spezialist Avatar von witkatz
    Registriert seit
    24.05.2006
    Ort
    NRW
    Alter
    54
    Beiträge
    553
    Blog-Einträge
    17
    Da ist noch der Endschalter, der vielleicht noch eine Rolle spielen könnte, sonst habe ich keine Idee mehr. Möglicherweise wurde die Adresse hart codiert?
    Vielleicht hat jemand so was ähnliches schon mal realisiert und könnte einen Tipp geben, wie man am besten eine PIC Adressierung für Busbetrieb vornimmt. Ansonsten ist es wohl kein allgemeines PIC Thema mehr...

Ähnliche Themen

  1. Eure Meinung: DC Motor mit integriertem Controller
    Von Unregistriert im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 0
    Letzter Beitrag: 19.06.2013, 20:13
  2. Fujifilm: Preisgünstigere Touchscreens mit alter Fototechnik
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 13.03.2013, 07:30
  3. PIC16F84 mit externem RAM-Baustein W24257AK-15
    Von Goblin im Forum PIC Controller
    Antworten: 3
    Letzter Beitrag: 03.02.2005, 21:45
  4. Schaltung von Conrad Nachbauen mit PIC16F84 Hilfe
    Von Gangelie im Forum PIC Controller
    Antworten: 1
    Letzter Beitrag: 17.01.2005, 06:38
  5. Pic16F84 mit 20MHz?
    Von Klick_here im Forum PIC Controller
    Antworten: 8
    Letzter Beitrag: 12.05.2004, 07:47

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress