01.06.2004, 20:18
hi,
ich verwende für die steuerung eines schrittmotors die bausteine l297 / l298. der l297 besitzt einen clockeingang, der die geschwindigkeit des schrittmotors steuert.
diesen eingang möchte ich mit einem pic ansteuern. damit der pic nicht nur mit dem erzeugen eines taktsignals beschäftigt ist, dachte ich an das pwm-modul. leider sind pwm-frequenzen von mehreren kHz etwas zu schnell. der gewünschte bereich liegt zwischen 1Hz und ca 200Hz.
in der AN564 - Using the PWM
(http://www.microchip.com/stellent/idcplg?
IdcService=SS_GET_PAGE&nodeId=1824&appnote=en011094) steht auf seite 5, erster
satz: "...timebase for the pwm outputs can be software selected to operate from an external clock source. this allows a lower frequency to be achieved. ...".
In der PICmicro MID-RANGE MCU FAMILY Reference
(http://ww1.microchip.com/downloads/en/DeviceDoc/33023a.pdf) steht unter section 13 - timer2 - 13.3 Timer Clock Source
"The Timer2 module has one source of input clock, the device clock (FOSC/4)." in dem datenblatt des pic 16f870 steht unter timer2 auch nichts von einer externen taktquelle.
es hat den anschein als könnte nur für den timer0 (und vielleicht auch den
timer1) eine externe taktquelle angegeben werden, aber nicht für den timer2, der für die pwm verwendet wird.
eine möglichkeit wäre wohl für jeden schrittmotor einen timer zu verwenden und in der isr des timers das zugehörige bit 2x zu invertieren (clk des l297 ist flankengesteuert). ich weiss allerdings nicht was passiert wenn gerade die interruptserviceroutine des zb timers1 ausgeführt wird und der timer2 überläuft. ich vermute wenn eine isr ausgeführt wird sind alle anderen interrupts gesperrt. damit wäre ein schritt des anderen motors (timer2) verloren !?
gibt es eigentlich bausteine(wenn ja wie heißen die?), die über einen zb 8bit-wert gesteuert ein pwm signal erzeugen (niedere frequenz)?
eine interessante analoge möglichkeit liefert der ic 4046. er enthält einen vco (spannungsgesteuerten oszillator). der frequenzbereich ist über einen widerstand und einen condensator einstellbar und lässt sich über einen weiteren widerstand noch verschieben. über einen digital-analog-konverter könnte ein vom pic ausgegebener wert in eine spannung umgesetzt werden und vom vco in eine frequenz gewandelt werden. umständlich wäre dann wohl die schrittanzahl zu bestimmen.
kennt jemand eine möglichkeit ein langsames taktsignal zu erzeugen ohne dabei den pic mit toggeln eines pins und warten zu beschäftigen?
können vielleicht die atmel's ein langsameres taktsignal erzeugen?
mfg sibi
ich verwende für die steuerung eines schrittmotors die bausteine l297 / l298. der l297 besitzt einen clockeingang, der die geschwindigkeit des schrittmotors steuert.
diesen eingang möchte ich mit einem pic ansteuern. damit der pic nicht nur mit dem erzeugen eines taktsignals beschäftigt ist, dachte ich an das pwm-modul. leider sind pwm-frequenzen von mehreren kHz etwas zu schnell. der gewünschte bereich liegt zwischen 1Hz und ca 200Hz.
in der AN564 - Using the PWM
(http://www.microchip.com/stellent/idcplg?
IdcService=SS_GET_PAGE&nodeId=1824&appnote=en011094) steht auf seite 5, erster
satz: "...timebase for the pwm outputs can be software selected to operate from an external clock source. this allows a lower frequency to be achieved. ...".
In der PICmicro MID-RANGE MCU FAMILY Reference
(http://ww1.microchip.com/downloads/en/DeviceDoc/33023a.pdf) steht unter section 13 - timer2 - 13.3 Timer Clock Source
"The Timer2 module has one source of input clock, the device clock (FOSC/4)." in dem datenblatt des pic 16f870 steht unter timer2 auch nichts von einer externen taktquelle.
es hat den anschein als könnte nur für den timer0 (und vielleicht auch den
timer1) eine externe taktquelle angegeben werden, aber nicht für den timer2, der für die pwm verwendet wird.
eine möglichkeit wäre wohl für jeden schrittmotor einen timer zu verwenden und in der isr des timers das zugehörige bit 2x zu invertieren (clk des l297 ist flankengesteuert). ich weiss allerdings nicht was passiert wenn gerade die interruptserviceroutine des zb timers1 ausgeführt wird und der timer2 überläuft. ich vermute wenn eine isr ausgeführt wird sind alle anderen interrupts gesperrt. damit wäre ein schritt des anderen motors (timer2) verloren !?
gibt es eigentlich bausteine(wenn ja wie heißen die?), die über einen zb 8bit-wert gesteuert ein pwm signal erzeugen (niedere frequenz)?
eine interessante analoge möglichkeit liefert der ic 4046. er enthält einen vco (spannungsgesteuerten oszillator). der frequenzbereich ist über einen widerstand und einen condensator einstellbar und lässt sich über einen weiteren widerstand noch verschieben. über einen digital-analog-konverter könnte ein vom pic ausgegebener wert in eine spannung umgesetzt werden und vom vco in eine frequenz gewandelt werden. umständlich wäre dann wohl die schrittanzahl zu bestimmen.
kennt jemand eine möglichkeit ein langsames taktsignal zu erzeugen ohne dabei den pic mit toggeln eines pins und warten zu beschäftigen?
können vielleicht die atmel's ein langsameres taktsignal erzeugen?
mfg sibi