| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| относно де-баунсване на енкодер http://mcu-bg.com/mcu_site/viewtopic.php?f=4&t=13699 |
Страница 1 от 1 |
| Автор: | timt [ Сря Апр 08, 2015 6:44 am ] |
| Заглавие: | Re: относно де-баунсване на енкодер |
Не е електролитен и се слага против претрепване на контакта. 10нф малък ми се вижда а и 10 ком. |
|
| Автор: | mitko_el [ Сря Апр 08, 2015 8:18 am ] |
| Заглавие: | Re: относно де-баунсване на енкодер |
В момента съм настъпал баш тая мотика... Енкодера затуй си има изходи А , В (има и С ама това не е важно в случая) .Следят се и 2-та сигнала (дори и само в една посока да го въртиш) , ако искаш да си ок. Пък кондензатор 10nF електролитен , не знам да съществува. |
|
| Автор: | ike [ Сря Апр 08, 2015 11:51 am ] | |||||||||
| Заглавие: | Re: относно де-баунсване на енкодер | |||||||||
Слагаш само един 47кОм резистор и ползваш софтуерен де-баунс. |
||||||||||
| Автор: | trakon [ Сря Апр 08, 2015 7:18 pm ] |
| Заглавие: | Re: относно де-баунсване на енкодер |
Благодаря на отзовалите се. Значи щом не съществува 10nF електролитен ( то и аз не намерих такъв де ), остава да е керамичен. Досега си дебаунсвах бутоните на Ардуиното софтуерно, нещо от сорта: int buttonFive, buttonFiveOld; void setup() { } void loop() { buttonFive=digitalRead(5); if (buttonFive!=buttonFiveOld) { delay(15); buttonFive=digitalRead(5); if(buttonFive==HIGH) { .....} else { ...... } buttonFiveOld=buttonFive } Сега обаче трябва да накача осем енкодера , по две линии -А и Б всеки на Ардуино, което в реално време чете сериен порт и движи три стъпкови моторчета. Имам усещането, че като завъртя енкодера и като ми започнат едни delay -и , моторчетата ще започнат да буксуват, а и с учебна цел искам да се науча да ги правя тея хардуерни дебаунсвания. За сега съм закачил два доста качествени енкодера и дори не ги дебаунсвам , работят си доста добре , отчитат си на всеки детент . Чета ги по следния начин: encoderPinA=digitalRead(2); encoderPinB=digitalRead(3); if(((encoderPinA != encoderPinALast)&&(encoderPinB != encoderPinA)) || ((encoderPinB != encoderPinBLast) && (encoderPinB == encoderPinA))) { ....... } else if(((encoderPinA != encoderPinALast) && (encoderPinB == encoderPinA) || (encoderPinB != encoderPinBLast) && (encoderPinB != encoderPinA))) { ..... } encoderPinALast=encoderPinA; encoderPinBLast=encoderPinB; Сега обаче съм взел по "ефтинджос", енкодери, но с повече функции и си искат дебаунсването. @timt , такива ги предписва пройзводителя на енкодера, ще работи на пет волта . Ако били по- големи, имало опасност веригата да стане много бавна и да не отчита всяко прещракване ма енкодера, но като го направя, ще се чуе, и ако има проблеми ще пробвам различни стойности. |
|
| Автор: | stefan63 [ Сря Апр 08, 2015 7:41 pm ] |
| Заглавие: | Re: относно де-баунсване на енкодер |
И за хардуерно , и за софтуерно - първо трябва да се сметне максималната честота на импулсите. |
|
| Автор: | timt [ Сря Апр 08, 2015 8:58 pm ] |
| Заглавие: | Re: относно де-баунсване на енкодер |
@timt , такива ги предписва пройзводителя на енкодера, ще работи на пет волта . Ако били по- големи, имало опасност веригата да стане много бавна и да не отчита всяко прещракване ма енкодера, но като го направя, ще се чуе, и ако има проблеми ще пробвам различни стойности. Както писа колегата stefan63 трябва да се тръгне от честотата на импулсите или по точно от спецификацията на енкодера. (бързината на действие) Предположих че енкодера ти е обикновен от тия ръчните а то май се оказа промишлен за което най вероятно е 10 нф инак за малките стойността е по голяма. |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|