Stránka 3 z 4
Napsal: 16 pro 2008, 15:39
od svetr petr
tyto rady už jsou mnohem více k vìci, už se dokážu alespoò orientovat ,,,peèení holubi by mì normálnì rozesnáli, te¡když se v problému topím, spíše bych je postøílel,,chápete
![Surprised :o](./images/smilies/icon_surprised.gif)
) pøesto Vás prosím ještì o další postøehy...k bascomu a øízení serva pomocí nìj....každá rada a ukázka potìší a pomùže...už to bude 3 den, co se s tím trápím a nic.....
ano, ta smyèka for.....next serva rozjede...tedy spíše rozcuká,ale to je vše, žádný plynulý pohyb...potenciometr mám ze serva venku, neovlivòuje otáèení serva, teï myslím mechanicky....jinak je stále k obvodu serva pøipojen...a stále nic...prosím Vás or adu
Napsal: 16 pro 2008, 15:49
od nekmil
Aha, tak servo se hýbe, tak signál na něj přichází.
A nebude příčinou toho cukání že elektronika serva nemá zpětnou vazbu od toho potenciometru ?
Pokud chceš to servo jen jako pohon tak by asi (určitě) bylo lepší použít PWM.
Zkus ten pot. vrátit zpět, co to bude dělat.
Ještě k tomu taktování - Mega8 bez krystalu běží na 1MHz (pokud jsi neměnil Fuse)
Napsal: 16 pro 2008, 16:07
od Ragnol
Možná by nebylo naškodu jsem umístit ten program s kterým to doopravdy zkoušíš.
Napsal: 16 pro 2008, 16:14
od honza_jan
svetr petr píše:... ano, ta smyčka for.....next serva rozjede...tedy spíše rozcuká,ale to je vše, žádný plynulý pohyb...potenciometr mám ze serva venku, neovlivňuje otáčení serva, teď myslím mechanicky....jinak je stále k obvodu serva připojen...a stále nic...prosím Vás or adu
Program ti vygeneruje jenom jeden prodloužený / zkrácený impuls po stisku některého tlačítka. Změněná délka impulsu musí být generována po celou dobu stisku tlačítka.
Napsal: 16 pro 2008, 16:18
od Ragnol
honza_jan píše:svetr petr píše:... ano, ta smyčka for.....next serva rozjede...tedy spíše rozcuká,ale to je vše, žádný plynulý pohyb...potenciometr mám ze serva venku, neovlivňuje otáčení serva, teď myslím mechanicky....jinak je stále k obvodu serva připojen...a stále nic...prosím Vás or adu
Program ti vygeneruje jenom jeden prodloužený / zkrácený impuls po stisku některého tlačítka. Změněná délka impulsu musí být generována po celou dobu stisku tlačítka.
možná bych pro začátek vynechal tlačítko a jen zkoušel ovládat to servo.
Napsal: 16 pro 2008, 17:07
od honza_jan
Ragnol píše:možná bych pro začátek vynechal tlačítko a jen zkoušel ovládat to servo.
Program ti musí generovat celkem 3 délky impulsů. 1,5 ms = servo v klidu, např 1,8 ms chod vlevo a 1,2 ms = chod vpravo. pro zjednodušení lze vynechat tlačítka a v nějakém časovém intervalu nechat cykly generování jednotlivých délek impulsů běhat dokola, aby viděl, že se servo točí. Lze naprogramovat jenom generování impulsů pro klidovou polohu serva, t.j. trvalé generování impulsů 1,5 ms dlouhých a s opakovací periodou 20 ms a potenciometrem si testnout pootočením na jednu, nebo na druhou stranu, jestli se bude měnit směr točení. Při nedostatečné znalosti principu funkce elektroniky serva to je nutné brát jako fakt a stvořit program tak, aby fungoval tak, jak jsem popsal dřív. Neznám Bascom s jeho vestavěnými funkcemi, takže nemohu posloužit přesným zněním příkazu. Znám ale funlci elektroniky serva a z toho vychází definování dovedností obslužného programu tak, jak jsem už popsal.
Napsal: 16 pro 2008, 17:26
od nekmil
Přikaz je jednoduchý
Servo(1) = 10 REM 10 = šířka impulsu 100 uS
Skutečně se bude motor točit když nemá odezvu od potenciometru ?
Stálo by to za vyzkoušení.
Napsal: 16 pro 2008, 17:45
od Mendor
Teoreticky je to možné, elektronika v servu bude dostávat třeba kratší impulzy než 1.5 ms.
V tom případě elektronika roztočí motor na nějakou stranu a bude čekat až se přesune potenciometr na správné místo. Jelikož se tak nestane bude točit motorem tak dlouho než se impulzy vrátí zpět na 1.5 ms.
Napsal: 16 pro 2008, 17:50
od nekmil
Napsal: 16 pro 2008, 18:16
od honza_jan
nekmil píše:Skutečně se bude motor točit když nemá odezvu od potenciometru ?
Stálo by to za vyzkoušení.
To je totiž princip elektroniky servozesilovače. při příchodu impulsů < 1,5 ms > se přepne potřebným směrem směr točení motoru a potenciometr se natáčí tak dlouho, až je délka interního impulsu MKO vykompenzovaná s příchozím impulsem na 0. Tehdy se motor zastaví. Nová klidová poloha bude trvat tak dlouho, dokud se znovu nezmění délka příchozího impulsu. Opakovací rámec 20 ms je prostor pro cca 8 dalších přenosových kanálů. Takže pokud se nebude potenciometr otáčet, tak se motor bude točit příslušným směrem až do změny šířky řídících impulsů zpět na 1,5 ms, kdy se motor zastaví, protože tam je potenciometrem nastaven klidový stav. Nebo se ihned začne motor točit opačně, když se změní šířka řídících impulsů na opačný směr. Takto koncipovaný pohon má při zhruba stejné složitosti programu výhodu hlavně v tom, že elektronika spínacího můstku pro motor je už spolehlivě vyřešená, funkční a řídí se jenom "jedním" drátem. Kdežto pro klasický můstek jich bude zapotřebí poněkud víc, pokud nechce při špatném programu, nebo přetížení pohonu vyměňovat hrst tranzistorů a všechny silové dráty.
Napsal: 16 pro 2008, 18:32
od nekmil
Děkuji
![Very Happy :D](./images/smilies/icon_biggrin.gif)
zase jsem chytřejší.
Jen mě tak napadlo, takové řízení pohonu má vlastně 3 stavy.
1 - motor stojí
2 - plný výkon vlevo
3 - plný výkon vpravo
Tak nastává problém s řízením otáček.
Uvažuju správně ?
Napsal: 16 pro 2008, 19:11
od honza_jan
nekmil píše:Děkuji
![Very Happy :D](./images/smilies/icon_biggrin.gif)
zase jsem chytřejší.
Jen mě tak napadlo, takové řízení pohonu má vlastně 3 stavy.
1 - motor stojí
2 - plný výkon vlevo
3 - plný výkon vpravo
Tak nastává problém s řízením otáček.
Uvažuju správně ?
Ano. Rychlost otáčení tato koncepce neřeší. Pouze start-stop a směr. Pro řízení rychlosti by byl nutný zásah do elektroniky serva, což může být pro řadu mladých baslířů zatím neřešítelný problém, protože servozesilovače se dnes většinou dělají jako zákaznické obvody a rozdělení řídící a výkonové části je problematické, ne-li nemožné. Navíc ani nejsou běžně dostupné ani datasheety.
Napsal: 16 pro 2008, 19:39
od nekmil
Tady jsem něco našel pro inspiraci
www.rotta.cz/PDF/tat201.pdf
Napsal: 16 pro 2008, 20:03
od honza_jan
To je využití doběhové rychlosti při návratu serva do klidové polohy. Tento kumšt ale nemusí umět všechna serva. Zvlášť levná. Záleží na výrobci. někdo to řešil třeba jenom rozšířenim mrtvého pásma o nějaké us okolo klidové polohy s tím, že servo si někam +- ke klidové poloze doběhne i za cenu vyššího příčného proudu. Dávat ale 500 a víc peněz za kvalitní servo a prakticky jej učinit nepouřitelné pro původní účel je na můj vkus poněkud velký luxus.
Napsal: 17 pro 2008, 16:31
od yakl
V adresári SAMPLES programu BASCOM-AVR 1.11.7.3 som našiel tento demonštračný program:
'-----------------------------------------------------------------------
' (c) 2001-2005 MCS Electronics
' servo.bas demonstrates the SERVO option
'-----------------------------------------------------------------------
'Servo's need a pulse in order to operate
'with the config statement CONFIG SERVOS we can specify how many servo's we
'will use and which port pins are used
'A maximum of 16 servos might be used
'The SERVO statements use one byte for an interrupt counter and the TIMER0
'This means that you can not use TIMER0 anymore
'The reload value specifies the interval of the timer in uS
'Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 10
$regfile = "2313def.dat"
Config Servos = 1 , Servo1 = Portb.0 , Reload = 10
'as an option you can use TIMER1
'Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 10 , Timer = Timer1
'we use 2 servos with 10 uS resolution(steps)
'we must configure the port pins used to act as output
Config Portb = Output
'finally we must turn on the global interrupt
Enable Interrupts
'the servo() array is created automatic. You can used it to set the
'time the servo must be on
Servo(1) = 10 '10 times 10 = 100 uS on
'Servo(2) = 20 '20 times 10 = 200 uS on
Do
Loop
Dim I As Byte
Do
For I = 0 To 100
Servo(1) = I
Waitms 1000
Next
For I = 100 To 0 Step -1
' Servo(1) = I
Waitms 1000
Next
Loop
End