Forum: Mikrocontroller und Digitale Elektronik Frage zu PIC12F1572


von Dionysios (nionios)


Lesenswert?

Hallo Forumgemeinde,

ich benötige einige Unterstützung um ein vorhandenen Bausatz inklusive 
Programm meinen Bedürfnissen anzupassen.

Der Bausatz misst mit einem DS18B20 Temperatur und stellt den 
parametrierten Tastgrad für ein Bürstenlosen Gleichstrommotor.
Die PWM Frequenz liegt bei 10666Hz.

Der von mir eingesetzte Motor ist wahrscheinlich ein 3 Phasen 
Wechselstrom Motor mit eigener Elektronik die ein 10Hz PWM Signal 
benötigt um die Drehzahl zu regulieren.
Er hat eine eigenen 12V= Anschluss und eine 12V= Triger Leitung.
Die Maximalleistung ist 400W.


Als erstes hätte ich eine frage zum eingesetzten µC PIC12F1572.

- Kann man mit "Bordmittel" ein 10Hz PWM erzeugen ohne die Messung des 
DS18B20 zu stören?

- Wenn nicht, gibt es einen alternativen µC
- Ist es sinnvoll ein Frequenz Konverter einzusetzen.
- Ist das anpassungs- vorhaben überhaupt sinnvoll außer zu lernzwecken.


Da der Bausatz von mir gekauft wurde und nicht selbst entwickelt, weiß 
ich nicht ob ich Schaltung und Quellcode hier so einfach einsetzen darf.

Vorab, der Vertreiber des Bausatzes kann oder möchte nicht unterstützen.

Hoffentlich habe ich das Problem gut beschreiben können
Danke für eure Aufmerksamkeit.


PS: Mein wissen ist begrenzt, nicht aber meine Motivation.

von N. M. (mani)


Lesenswert?

Dionysios schrieb:
> ich benötige einige Unterstützung um ein vorhandenen Bausatz

Welcher? Link? Datenblatt?

Dionysios schrieb:
> inklusive Programm meinen Bedürfnissen anzupassen.

Welches Programm? Link oder Programm selbst zeigen!

Dionysios schrieb:
> Der von mir eingesetzte Motor ist wahrscheinlich ein 3 Phasen
> Wechselstrom Motor mit eigener Elektronik die ein 10Hz PWM Signal
> benötigt

Link? Datenblatt?

Dionysios schrieb:
> Kann man mit "Bordmittel" ein 10Hz PWM erzeugen ohne die Messung des
> DS18B20 zu stören?

Klar geht das. Das ist kein Problem des eingesetzten uC, sondern 
vielmehr wie das Programm aussieht bzw. deine Hardware (Stichwort EMV).

Dionysios schrieb:
> Wenn nicht, gibt es einen alternativen µC

Brauchst du nicht. Der vorhandene reicht.

Dionysios schrieb:
> Ist es sinnvoll ein Frequenz Konverter einzusetzen.

Für was? Du hast doch bereits den uC.

Dionysios schrieb:
> Ist das anpassungs- vorhaben überhaupt sinnvoll außer zu lernzwecken.

Das weißt mit den gegebenen Infos nur du. Aber selbst wenn man den Code 
komplett neu schreiben müsste, einen DS18B20 auslesen und eine passende 
PWM ausgeben ist kein Hexenwerk.

Dionysios schrieb:
> Da der Bausatz von mir gekauft wurde und nicht selbst entwickelt, weiß
> ich nicht ob ich Schaltung und Quellcode hier so einfach einsetzen darf.

Wieso nicht? Was spricht dagegen? Lizenzrecht? Oder geht es dir darum ob 
du es hier Posten darfst?

von Peter D. (peda)


Lesenswert?

Dionysios schrieb:
> - Kann man mit "Bordmittel" ein 10Hz PWM erzeugen ohne die Messung des
> DS18B20 zu stören?

Überhaupt kein Problem. Der PIC12F1572 hat PWM-Ausgänge, die unabhängig 
von jedweder Software arbeiten.
DS18B20 kann man mit Timerinterrupts oder mit einfachen Delay-Macros 
implementieren.

von Ate E. (drigo)


Lesenswert?

Dionysios schrieb:
> ich benötige einige Unterstützung um ein vorhandenen Bausatz inklusive
> Programm meinen Bedürfnissen anzupassen.

Dionysios schrieb:
> Vorab, der Vertreiber des Bausatzes kann oder möchte nicht unterstützen.

Gar nicht, oder nicht umsonst?
"möchte nicht unterstützen" und "umsonst" würden Sinn ergeben.
Vergiss nicht: Mitarbeiter kosten Geld!

Einfach den Hersteller fragen, ob du den Sourcecode hier einstellen 
darfst.
Gibt es einen Link zum Produkt oder zur Bauanleitung?

von N. M. (mani)


Lesenswert?

Wenn es der Bausatz ist wo ich vermute:
Ist der Code downloadbar.
In einer Datei werden die Hardware inits gemacht. Man müsste also nur 
die PWM Register richtig setzen um auf die 10Hz zu kommen und wäre 
fertig.
Das größte Problem wäre dann, dass es mit Basic(Mikroe) geschrieben 
wurde. Keine Ahnung ob es da noch kostenlose Versionen gibt.

von Johannes R. (oa625)


Lesenswert?

N. M. schrieb:
> Keine Ahnung ob es da noch kostenlose Versionen gibt.

Gibt es (Version 7.6):
https://www.mikroe.com/mikrobasic-pic

Allerdings mit der Einschränkung auf 2kByte Hex-Code bei der 
Free-Version.
Kaufen ist bei der Preispolitik von mikroe leider illusorisch geworden.

Gruß
JR

von H. H. (hhinz)


Lesenswert?

Johannes R. schrieb:
> Einschränkung auf 2kByte Hex-Code

Die einfache Lüftersteuerung braucht keinen Teil davon.

von Jan S. (Firma: Eigenbau) (vox_equus)


Lesenswert?

Der Code ist zu finden:
https://www.ramser-elektro.at/shop/bausaetze-und-platinen/pwm-fan-universelle-pwm-regelung/
Leider in MikroC od. MikroBasic.
Mit bürstenlosem Gleichstrom ist das glaub ich nicht. Eher für 
Bürstenmotor.

: Bearbeitet durch User
von Thomas Z. (usbman)


Lesenswert?

Johannes R. schrieb:
> Kaufen ist bei der Preispolitik von mikroe leider illusorisch geworden.
Nun Kaufen würde ich deren Compiler auch nicht. Die sind ein schlechter 
Witz.

Die Lizenzgenerierung übrigens auch. Die ist eine Lachnummer genau wie 
die Compiler.

: Bearbeitet durch User
von Dionysios (nionios)


Lesenswert?

Ich möchte mich als erstes für euer Interesse und Engagement bedanken.

@mani du hast natürlich recht das ist in MicroBasic
Zu den MicroBasic Compiler, es gibt eine freie Version.

Habe den Herren in Österreich kontaktiert und keine Antwort erhalten.
Scheint wohl ein Kapazitätsproblem zu sein.

Nachdem ich einige Stunden verbracht habe mich in die Materie 
einzulesen, habe ich mich an euch gewandt um die Machbarkeit 
festzustellen.

N. M. schrieb:
> Man müsste also nur
> die PWM Register richtig setzen um auf die 10Hz zu kommen

da fangen die "drei Probleme" an.
-Basistakt ändern?
-Prescaler setzen?
-?
Ich muss sagen das mit der pwm Frequenz habe ich nicht verstanden

 sub procedure InitHardware
    ANSELA       = %00000000             'All pins are digital
    PORTA        = %00000000             'Reset all IO bits to 
Input/Output
    TRISA        = %00001010             'Select inputs/outputs
    'TRISA.0     = 0                     'RA0 = Output = TX
    'TRISA.1     = 1                     'RA1 = Input = RX
    'TRISA.2     = 0                     'RA2 = Output = PWM
    'TRISA.3     = 1                     'RA3 = Input = Option Jumper
    'TRISA.4     = 0                     'RA4 = Output = LED
    'TRISA.5     = 1                     'RA5 = Input = 1 Wire
    'TRISA.6     = 0                     'Not implemented
    'TRISA.7     = 0                     'Not implemented
    OSCCON = %11111011                   'Intrnal Oscillator 16Mhz
    PWM3CLKCON = $00                     'Config PWM 3
    PWM3LDM_bit = 0                      'Config PWM 3
    PWM3CON     = $00                    'Config PWM 3
    PWM3DCH     = $00                    'Config PWM 3
    PWM3DCL     = $00                    'Config PWM 3
    PWM3PHH     = $00                    'Config PWM 3
    PWM3PHL     = $00                    'Config PWM 3
    PWM3OFH     = $00                    'Config PWM 3
    PWM3OFL     = $00                    'Config PWM 3
    PWM3PRH     = 5                      'Config PWM 3 Frequency = 10666 
Hz
    PWM3PRL     = 220                    'Config PWM 3 Frequency = 10666 
Hz
end sub

wie kommt es zu den 10666Hz? Wohl 16MHz/1500 aber warum 1500?


Das Brennen könnte ich mit MPLAB X IPE und einen China Klon PIKKIT3 
warscheinlich machen.

von H. H. (hhinz)


Lesenswert?

Dionysios schrieb:
> PWM3PRH     = 5                      'Config PWM 3 Frequency = 10666
> Hz
>     PWM3PRL     = 220                    'Config PWM 3 Frequency = 10666
> Hz
> end sub
>
> wie kommt es zu den 10666Hz? Wohl 16MHz/1500 aber warum 1500?

Naja, 5*256+220 sind 1500, und das hat sich der Autor wohl einfach so
ausgewählt.

Du wirst aber auch die Taktquelle für die PWM ändern müssen:

PWM3CLKCON = $00                     'Config PWM 3

: Bearbeitet durch User
von Dionysios (nionios)


Lesenswert?

H. H. schrieb:
> Du wirst aber auch die Taktquelle für die PWM ändern müssen:

PWM3CLKCON = %01110001               'Config PWM 3

PWM3PRH     = 5                      'Config PWM 3 Frequency = 10Hz

PWM3PRL     = 220                    'Config PWM 3 Frequency = 10Hz

OSCCON = %11111011 kann bleiben?

Ah nein das muss warscheinlich %11100011 sein.

: Bearbeitet durch User
von H. H. (hhinz)


Lesenswert?

Dionysios schrieb:
> H. H. schrieb:
>> Du wirst aber auch die Taktquelle für die PWM ändern müssen:
>
> PWM3CLKCON = %01110001               'Config PWM 3

Hätte %01110000 angenommen.


> PWM3PRH     = 5                      'Config PWM 3 Frequency = 10Hz
>
> PWM3PRL     = 220                    'Config PWM 3 Frequency = 10Hz

Da komme ich für 10Hz aber auf andere Werte.


> OSCCON = %11111011 kann bleiben?
>
> Ah nein das muss warscheinlich %11100011 sein.

Nö, bleibt.


Den Wertebereich des Duty-Cycle wird man noch anpassen müssen.

von Dionysios (nionios)


Angehängte Dateien:

Lesenswert?

Kannst du mir bitte das erklären mit dem anderen Wert!

ich dachte ich könnte den prescaler auf 128 setzen und den Takt auf 
HFINTOSC 2Mhz

PWM3PRH und PWM3PRL belassen.

Das hätte ich noch anhängen müssen Sorry!

: Bearbeitet durch User
von Dionysios (nionios)


Lesenswert?

Ich wage mal einen Schuss ins Blaue

PWM3PRH = 48
PWM3PRL = 212

Danke für deine Geduld.

von H. H. (hhinz)


Lesenswert?

Dionysios schrieb:
> Ich wage mal einen Schuss ins Blaue
>
> PWM3PRH = 48
> PWM3PRL = 212
>
> Danke für deine Geduld.

Eigentlich 48 und 211, AFAIR.

von Dionysios (nionios)


Lesenswert?

Hast du noch Geduld das wir die frage der Duty-cycle Anpassung 
durchgehen?

Scheint im PWM_FAN.mbas geregelt zu sein

von H. H. (hhinz)


Lesenswert?

Dionysios schrieb:
> Hast du noch Geduld

Heute Nacht nicht.

Aber du kannst ja schon mal nach PWM3DC und PWM3PH suchen.

: Bearbeitet durch User
von Dionysios (nionios)


Lesenswert?

H. H. schrieb:
> du kannst ja schon mal nach PWM3DC und PWM3PH suchen

Da ich das anfahren des Motors mit 50% für 2 Sekunden möchte habe ich 
die Duty-cycle auf 50% ausgerechnet.

Warum ich mir einbilde das Phase 90° sein muss weiß ich nicht.
Macht doch einer mal das Licht an!


    PWM3DCH     = 24
    PWM3DCL     = 105
    PWM3PHH     = 12
    PWM3PHL     = 53
    PWM3OFH     = $00
    PWM3OFL     = $00
    PWM3PRH     = 48
    PWM3PRL     = 211

von H. H. (hhinz)


Lesenswert?

Und wo im Code hast du die gefunden?

von Dionysios (nionios)


Lesenswert?

sub procedure Fan_Set_Speed() und

sub procedure InitHardware

von Ate E. (drigo)


Lesenswert?

Dionysios schrieb:
> habe ich die Duty-cycle auf 50% ausgerechnet.

Bei 10Hz sind 50% Duty aber 0,05 Sekunden.

Was hast du eigentlich vor?

Stell mal dein Lastenheft bzw. den Text der Hausaufgabe hier rein.

: Bearbeitet durch User
von Ate E. (drigo)



Lesenswert?

Kommen mit meinem Tool auf andere Werte als der TO !

von Ate E. (drigo)


Lesenswert?

Das wäre dann auch:
1
sub procedure PWM2_Set_Duty(dim duty as word)
2
duty = word((float(duty) / $FFFF) * 50000)
3
PWM2DCH = Hi(duty)
4
PWM2DCL = Lo(duty)
5
PWM2LD_bit = 1
6
end sub

von Dionysios (nionios)


Lesenswert?

Da die Basisfrage zu dem µC beantwortet ist möchte ich den Tread hier 
Schließen. Den Rest werde ich selbst herausfinden müssen.
Vielen Dank für die freundliche Unterstützung

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.