PICAXE a krokové motory

jova
Příspěvky: 269
Registrován: 16 pro 2013, 11:40

PICAXE a krokové motory

Příspěvek od jova » 29 kvě 2015, 12:38

Zdravím, potřeboval bych trochu poradit s řízením krokových motorů.
Mám klasické zapojení PICAXE 20m2, driver s čipem TB6560 nastaveným na mikrokroky 1/16, krokový motor.
Nedaří se mi přijít na způsob, jak docílit toho, aby se motor otočil o přesně daný počet otáček při maximální rychlosti.
V současnosti používám dva způsoby.
1. počet pulzů do motoru generuji smyčkou for - next a při každém průchodu měním příkazem toggle stav výstupu.
Tento způsob je, co se týká přesně daného počtu otáček vyhovující, bohužel nedokáže generovat pulzy, ani při 32MHz, v dostatečné rychlosti, aby se motor točil maximálními otáčkami i při nastavení mikrokroků na 1/16.
2. používám funkci PWMOUT která dokáže generovat pulzy v patřičné rychlosti, ale zase nevím jak nastavit přesný počet pulzů, aby motor provedl třeba jednu otáčku.
Ideální by bylo skloubit oba způsoby, ale nevím jak na to.

Velice zajímavý je i článek pana Ing. Černého - Jak vznikal puk... http://robodoupe.cz/2015/jak-vznikal-pu ... keji-2015/
Je tam popsán způsob řízení motorů pomocí PWM a využití paměti EEPROM. Neporadíte mi někdo, jak tu ukázku programu dotáhnout do fungujícího stavu? S programování EEPROM zatím zkušenosti nemám.

micer
Příspěvky: 128
Registrován: 12 čer 2014, 19:14

Re: PICAXE a krokové motory

Příspěvek od micer » 29 kvě 2015, 17:08

jova píše: Neporadíte mi někdo, jak tu ukázku programu dotáhnout do fungujícího stavu? S programování EEPROM zatím zkušenosti nemám.
V tom článku jsou jen dva fragmenty. Až se dostanu k počítači, kde je ten program uložen, klidně ho sem dám celý. Základní myšlenka je tato: Tabulka (ta tam je) je předem spočítaná ručně pomocí "wizardu" PICAXE a vzhledem k tomu, že je to jen na několik použití, programuje se do PICAXE vždycky znovu (jinak je lepší ji tam nasypat jednou a pak neničit při přenosu programu). S tabulkou musí souhlasit vyhybky (ten první fragment) které přepínají dělicí poměr v PWM respektive čtyři různé povely PWM. Celé to pak funguje tak, že se přečte ze vstupu hodnota požadované rychlosti (tam je to analogové napětí, ale může to být 1 byte odkudkoli), pak se podle hodnoty vyhybkou nastaví dělicí poměr (vezme se příslušný povel PWM) a parametr do PWM se vezme z tabulky (adresa v paměti je vlastně ten vstupní byte). To je vše. Regulace není plynulá, je v 255 stupních (ještě míň, několik jich znamená stop), ale ty stupně jsou nastavené tak, aby změna rychlosti byla skoro lineární (nebo jiná podle té tabulky).

Uživatelský avatar
jrt
Příspěvky: 1352
Registrován: 17 úno 2013, 17:13

Re: PICAXE a krokové motory

Příspěvek od jrt » 29 kvě 2015, 17:46

Nedalo mi to a provedl jsem pokus:

Tento kód:

Kód: Vybrat vše

#picaxe 20m2
#no_data
setfreq m32
for w0 = 0 to 65000
  toggle B.1
next w0
end
Generuje frekvenci 1,9 kHz.

Tento kód:

Kód: Vybrat vše

#picaxe 20m2
#no_data
setfreq m32
w0 = 0
do while w0 < 65000
  pulsout B.1, 24
  inc w0
loop
end
generuje frekvenci 2,4 kHz. Hodnota 24 u příkazu pulsout odpovídá délce pulzu 30 us (24 x 1,25 us), což je podle katalogového listu minimální povolená délka pro obvod TB6560.

Tento kód:

Kód: Vybrat vše

#picaxe 20m2
#no_data
setfreq m32
for w0 = 0 to 65000
  pulsout B.1, 24
next w0
end
generuje frekvenci 3,13 kHz.
jrt
hobbyrobot.cz, profirobot.cz
edurobot.cz, robodoupe.cz

jova
Příspěvky: 269
Registrován: 16 pro 2013, 11:40

Re: PICAXE a krokové motory

Příspěvek od jova » 29 kvě 2015, 19:08

Děkuji za pokusy. Otestoval jsem to a asi by to i odpovídalo. Ten motorek se při tom nastavení mikrokroků na 1/16 otáčí při těch 3,13 KHz otáčí cca 1x za sekundu (200*16=3200). Bohužel je to poměrně málo, potřeboval bych se dostat frekvencí nad 10kHz, to je hodnota při které se ještě dokáže motor roztočit ze zastavení bez nějaké frekvenční náběhové rampy. Zkušebně jsem ho dokázal vytočit frekvencí i nad 70kHz.

Uživatelský avatar
jrt
Příspěvky: 1352
Registrován: 17 úno 2013, 17:13

Re: PICAXE a krokové motory

Příspěvek od jrt » 30 kvě 2015, 13:16

Zkušebně jsem ho dokázal vytočit frekvencí i nad 70kHz.
To je docela zvláštní, protože TB6560 má v katalogovém listu uvedenu maximální frekvenci na vstupu STEP 15 kHz.
jrt
hobbyrobot.cz, profirobot.cz
edurobot.cz, robodoupe.cz

jova
Příspěvky: 269
Registrován: 16 pro 2013, 11:40

Re: PICAXE a krokové motory

Příspěvek od jova » 30 kvě 2015, 15:55

Právě to omezení mě dost překvapilo už když jsi psal o délce pulsů. Používám tyhle drivery: http://www.ebay.com/itm/New-CNC-Router- ... 33a3611eb0 a budím je z normálního tónového generátoru. Ty drivery podle pískotu musí zvládnout zřejmě i mnohem víc, ale motor už vypadne otáčkami ze synchronizace. Přeci jenom je to velikost Nema 23.
A nemají na to vliv ty mikrokroky 1/16? Není tam ještě před tou TB6560 na tom driveru nějaká dělička?

Uživatelský avatar
jrt
Příspěvky: 1352
Registrován: 17 úno 2013, 17:13

Re: PICAXE a krokové motory

Příspěvek od jrt » 30 kvě 2015, 16:22

Ono nejde o to, kolik ten driver zvládne podle pískání, ale jak se s tím vypořádá vnitřní logika a hlavně, jak rychle se dokáží zavřít výstupní tranzistory. Protože pokud jsou pomalé (a výrobce jistě ví, proč předepisuje tak nízký vstupní kmitočet), dochází ke krátkodobým zkratům a ty tranzistory jsou silně namáhány proudovými špičkami.
Dělička tam není, na modulu, který mám na stole, je obvod 74123. To je časovač a nejspíš snižuje proud motorem, pokud nepřicházejí pulzy na vstup STEP.
jrt
hobbyrobot.cz, profirobot.cz
edurobot.cz, robodoupe.cz

jova
Příspěvky: 269
Registrován: 16 pro 2013, 11:40

Re: PICAXE a krokové motory

Příspěvek od jova » 31 kvě 2015, 12:55

Hraji si tu s tou PWM regulací a mám v tom trochu chaos. Zvolil sem si rozsah podle přiloženého kódu. Krokový motor se otáčí od minima po své maximum které je omezeno u b0 tím přičtením +11. Potud je to funkční a zdá se že zatím vyhovující.
Když ale pomalu otáčím potenciometrem, objeví se v tom rozsahu při hodnotě b0=117, 118 něco jako díra. Ten PWM generátor přestane fungovat. Když jsem měl ještě jako délku aktivního pulsu násobitel 4x byla tam ty díry 3. Jedna na 64, další na 128 a 192. Když jsem na to koukal osciloskopem, do těch 64 to byly více méně jen jehlovité pulsy, pak se to teprve změnilo na obdélníkové. Zřejmě to má nějaké logické vysvětlení, ale nemohu na něj přijít. :(

Kód: Vybrat vše

setfreq m32
do
readadc b.6,b0
let b0=b0+11  max 255   	;+11 maximální otáčky nastavení
let b1=b0*2 
pwmout pwmdiv64, C.2,b0,b1	
loop

micer
Příspěvky: 128
Registrován: 12 čer 2014, 19:14

Re: PICAXE a krokové motory

Příspěvek od micer » 31 kvě 2015, 13:24

Zkus do smyčky vložit nějaké delší čekání (třeba 0,5 s ... pochopitelně s úpravou parametru dle hodin 32 MHz) a zkus se na to podívat znova. Nejsem si jistý, ale mám takové tušení, že tě to překvapí. Nebo jiný postup, neber tu vstupní hodnotu pravidelně cyklicky z AD převodníku, ale posílej ji tam sériovou linkou z PC, tím budeš mít naprostou kontrolu nad hodnotou, která tam jde a právě je. A program bude vždycky čekat na další byte z linky dokud nepříjde další, mezitím bude fungovat PWM podle posledního zadání. Mělo by to mít v podstatě stejný efekt. Nemohu to teď vyzkoušet a ověřit jestli tuším správně, ale touto cestou bych šel.

jova
Příspěvky: 269
Registrován: 16 pro 2013, 11:40

Re: PICAXE a krokové motory

Příspěvek od jova » 31 kvě 2015, 14:44

Sypu si popel na hlavu!
Nedošlo mi, že při tom násobení se b1 dostává na svou max. hodnotu 255 a pak se nuluje! To je ten bod, kdy se to zastaví. Musí tam být proměnná typu word!

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host