| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| MSP430G2XXX ADC10CTL питане. http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=14222 |
Страница 1 от 2 |
| Автор: | ГеоргиД [ Пон Дек 14, 2015 3:57 am ] |
| Заглавие: | MSP430G2XXX ADC10CTL питане. |
Здравейте, изтеглих късата клеца и ми се падна МСП430 (а избора колко богат беше само...). Проекта е свободно избираем и съм решил да си направя 'робот' който бяга от препятствия. За целта се сдобих със шаси, L293D драйвър 2 сензора на Шарп GP2Y0A21, лънчпада на МСП заедно със 2553 и всичко започна ... управлението на моторите се случи сравнително бързо За направо използвам: P1DIR |= BIT0 + BIT1 + BIT2; P1OUT &= ~BIT0 + BIT1 + BIT2; //Left FORWARD P1OUT &= ~BIT1; P1OUT |= BIT0; P2DIR |= BIT0 + BIT1 + BIT2; P2OUT &= ~BIT0 + BIT1 + BIT2; // Right FORWARD P2OUT |= BIT2; P2OUT &= ~BIT1; Като когато се разменят P1OUT bit0/1 и P2OUT bit2/1 се въртят на обратно респективно моторите се спират когато енейбъл пина на драйвара гушне нулата. До тук добре обаче четенето на дата от тези сензори ми скъси живота, пробрах с вградено ADC10 обаче нещо изтървам може ли някой да удари рамо/идея/коментар ? Правя в общи линии това: #include "msp430g2553.h" long ADCDATA; long sensor_value; long distance; void main() { WDTCTL = WDTPW + WDTHOLD; // disable watch dog timer DCOCTL = CALDCO_16MHZ; // set internal oscillator at 16MHz BCSCTL1 = CALBC1_16MHZ; // set internal oscillator at 16MHz ADC10CTL0 = ADC10SHT_3 + SREF_1 + REFON + ADC10ON; //Sample-Hold time + max/min ref V + ON ADC10CTL1 = INCH_3; // Chanlle 3 + _delay_cycles(30); // ref V stabilization. while(1) { ADC10CTL0 |= ENC + ADC10SC; while (ADC10CTL1 & ADC10BUSY); ADCDATA = ADC10MEM; sensor_value = BIT3; distance = sensor_value / ADC10MEM; if( distance > 300) { P1DIR |= BIT0 + BIT1 + BIT2; P1OUT &= ~BIT0 + BIT1 + BIT2; Като за начало искам да се науча да го чета, един път успея ли моторите да ги спра ако има нещо близко ще се науча и да ги въртя на където пожелая в зависимост от показанията. Така, проблемът заради който пускам темата е, може би са 2 всъщност. 1. Променливата distance съм я изкопал (https://acroname.com/articles/linearizi ... anger-data) - R(V-3) = 6787 -4(V-3). Или поне искам да е така, проблемът е че не знам КАК да прочета дата от сензора. sensor_value така зададено в кода излиза 8, когато се провери на дебъгера. ADC10MEM е 1023 което като се има в предвид напрежението е ок ? 2. Въобще правилно ли мисля концепцията че АЦП-то ще ми преобразува датата от сензора в зависимост от която франкенщайна ми ще се движи напред/назад или ще завива ? Благодаря на отзовали те се. |
|
| Автор: | ike [ Пон Дек 14, 2015 6:32 am ] |
| Заглавие: | Re: MSP430G2XXX ADC10CTL питане. |
Този ред sensor_value = BIT3; какво прави? |
|
| Автор: | ГеоргиД [ Пон Дек 14, 2015 10:27 am ] |
| Заглавие: | Re: MSP430G2XXX ADC10CTL питане. |
По принцип сензора ми е свързан на P1_BIT3, с този ред се мъча да накарам пустия датчик да ми даде някаква дата. Така може да видиш, че в кода задавам ADC10CTL1 = INCH_3; // Chanel 3 не случайно е така, според ДШ на процесора: P1.3/ General-purpose digital I/O pin ADC10CLK/ ADC10, conversion clock output(1) A3/ ADC10 analog input A3(1) VREF-/VEREF-/ ADC10 negative reference voltage (1) CA3/ Comparator_A+, CA3 input CAOUT Comparator_A+, output Та мисля че ( не е задалжително да съм прав), че със sensor_value = BIT3; искам променливата да приема дата от датчика |
|
| Автор: | stefan63 [ Пон Дек 14, 2015 2:29 pm ] | |||||||||
| Заглавие: | Re: MSP430G2XXX ADC10CTL питане. | |||||||||
Виж ADC10AE0, ADC10AE1 регистрите.
Това са само 1-ци, или не работиш коректно с АЦП-то, или напрежението е по-голямо от макс. за конверсия. |
||||||||||
| Автор: | stefan63 [ Пон Дек 14, 2015 2:40 pm ] |
| Заглавие: | Re: MSP430G2XXX ADC10CTL питане. |
Числото от ADC10MEM , разделено на 1024 и умножено по опорното на АЦП - дава напрежението във волтове, което мериш от сензора. Каква дистанция е това -гледаш описанието на сензора - колко волта на колко сантиметра отговарят - може с таблица, може с формула за линеаризация.апроксимация. Но първо трябва да разбереш какво искат да ти кажат на страницата https://acroname.com/articles/linearizi ... anger-data . Щото са ти дали някакви картинки за 10-битово АЦП, ама май не са казали какво е опорното. |
|
| Автор: | ГеоргиД [ Пон Дек 14, 2015 2:50 pm ] |
| Заглавие: | Re: MSP430G2XXX ADC10CTL питане. |
Хм, не разбирам 'това са само единици' :/ Напрежението не мисля, че е по голямо - самият датчик работи със VCC 5V, аутпут дата му е от 0.3V до 3.0V . МSP-то трябва да е на 3.3V въпреки, че е захранено чрез УСБ от ПС към него. По вероятно е да не работя правилно с АЦП-то.... как се работи коректно с това ? - Предния ти пост се е случил докато пиша моя, та опорното на АЦП-то не трябва ли е да REFON който съм специфицирал ? - референтното напрежение на АЦП-то ? - Това напрежение от сензора нали трябва да се запише в променлива за да мога да го използвам ? - За дистанция мисля да се измързелувам и да бъде следното примерно при напрежение от сензора 2V което е апроксимативно 12 сантима директно стоп машини и в зависимост кой сензор го е подал тези 2 волта да спира 2те колела, след което с противоположното да маневрира но за това има време. Как изхода на сензора да го сложа вход на АЦП-то ? |
|
| Автор: | ГеоргиД [ Пон Дек 14, 2015 4:13 pm ] |
| Заглавие: | Re: MSP430G2XXX ADC10CTL питане. |
Опа, Стефан63 прав си. На мен външното ми захранване е 5 волта (7805) а ако ползвам VCC за опорно на АЦП-то (5V) нещата нема да се случат - МСП по каталог е: • Low Supply-Voltage Range: 1.8 V to 3.6 V АЦП10 - по каталог е: Vcc analog supply voltage Min 2.2 Max 3.6 Analog input voltage Vcc=0 Min = 0 / Max = Vcc Следващ въпрос идеи за правилна конверсия ? |
|
| Автор: | ike [ Пон Дек 14, 2015 7:01 pm ] | |||||||||
| Заглавие: | Re: MSP430G2XXX ADC10CTL питане. | |||||||||
Значи първо се научи, как да мигаш светодиод и като задобрееш в това, пиши пак в тази тема да ти кажа от къде да си дръпнеш msp430 книга, workshop и примери на С и asm за твоя контролер. До тогава не свързвай нито датчици нито двигатели. |
||||||||||
| Автор: | stefan63 [ Пон Дек 14, 2015 8:50 pm ] |
| Заглавие: | Re: MSP430G2XXX ADC10CTL питане. |
Георги, шансът- някой точно в момента да работи с АЦП на мсп...2253 , да ти види темата и да ти отговори - клони към нула. Тези неща не се помнят, четеш ,разбираш ,пишеш , дебъгваш, после забравяш - работил съм с АЦП12 и АЦП16 на тая фамилия и не помня нищо конкретно. Или ползваш някакви готови библиотеки - в случая едва ли ще намериш, евентуално примери от сайта на ТИ. Сензорът ти има изход, закачил си го към пин на мсп-то. Следва да ориентираш тоя пин като вход, да го закачиш към АЦП-то - логически-ако има някой специален бит някъде.И -ако правилно схващам - да укажеш ,че точно тоя вход е аналогов - виж предния ми пост. Явно си много в началото, мигането на светодиод е нормано начало, но може и с по-сложни проекти. Като за начало - слагай по един 300 омов резистор на всяка връзка, която правиш.Например -изхода на сензора го мини през 300 ома към входа на АЦПто. Така ,ако направиш входа на АЦПто -изход, нищо няма да ти изгори(вероятно). И на първо време - изключи тоя датчик, вклщчи един потенциометър и си подкарай АЦПто коректно. |
|
| Автор: | slav4o.com [ Пон Дек 14, 2015 9:26 pm ] |
| Заглавие: | Re: MSP430G2XXX ADC10CTL питане. |
Съвсем случайно съм работил с подобен контролер. Честно казано са калпазански . АЦП е доста неточно дават го 10 бита, но като че ли е 8 - последните 2 играят. Някъде в описанието също го пишеше. Аз го тълкувам като така MSP имат стандартни 2 вида АЦП модули 10 и 12 битови и по слабите покриват стандарта на 10 битовите, но най-слабите само покриват стандарта за да са съвместими. Така това не е толкова от значение. Иначе по спомен имаше и някаква особеност за да заработи АЦПто, ако не се сетнат в определен ред регистрите не тръгваше. ГеоргиД каква среда използваш за програмиране, енергия ? |
|
| Автор: | ike [ Пон Дек 14, 2015 10:10 pm ] | |||||||||
| Заглавие: | Re: MSP430G2XXX ADC10CTL питане. | |||||||||
ADC си работи съвсем нормално, 10 бита не са несто непостижимо, те даже имат 16 битови делта-сигма MSP430F2013 http://www.ti.com/product/msp430f2013 . Ако ти играят много последните 2 бита филтрирай си добре входа и сложи овърсамплинг - има го вградено в ADC модула. ADC си работи нормално не трябва да се правят никакви магии, четеш дейташита и си тръгва. Просто тайната е, че с
не можеш да прочетеш данните от сензора. |
||||||||||
| Автор: | gicho [ Вто Дек 15, 2015 11:25 am ] |
| Заглавие: | Re: MSP430G2XXX ADC10CTL питане. |
@ike - +1, има и с 24битови ацп-та. славчо, при подобни изказвания е хубаво да уточниш в какви условия си ги мерил - лаунчпад с обемен монтаж не става за тест. В datasheet-а си има характеристики, ако си открил несъответствие между твърденията на таксасците и реалността можеш да им пишеш да си коригират документацията. А стандарт за ацп-та няма, има различни характеристики. Достатъчно е да вадят някакви променящи се 10 бита и могат спокойно да пишат че им е 10 битово ацп-то, стига да не лъжат за грешките в меренето му. |
|
| Автор: | slav4o.com [ Вто Дек 15, 2015 1:43 pm ] |
| Заглавие: | Re: MSP430G2XXX ADC10CTL питане. |
Launchpad със MSP430G2452 . Никакви варианти за семплинг клок не помогнаха. Независимо от референтното напрежение дали е външно, дали е Vdd или вътрешното 2.5 или 1.5V. Направи ми впечатление че имаше отклонение дори когато свързах аналоговия вход твърдо към маса. Използването на фукцията AnalogRead() в енергия не даде по-добри резултати. Също така изпробвах и вътрешния термодатчик, за да видя как се държи, но и неговите показания бяха такива. Не зная на какво се дължи всичко това. Със осцилоскоп видимо няма смущения по захранването и по другите сигнали. Лаунчпада е SMD само пиновете на портовете и контролера с цокъла са обемни. |
|
| Автор: | stefan63 [ Вто Дек 15, 2015 10:37 pm ] |
| Заглавие: | Re: MSP430G2XXX ADC10CTL питане. |
преди 10-на дена се борих с адц12 на ф249 . шантаво си беше , мене ме интересуваше само термометъра - няколко часа отидоха да се сборя с всичките битове и битчета. има си за четене - залагат много неща и оттам трябва доста четене , докато съобразиш какво бъркаш. та с адц10 може да си се отказал преди да си познал верните комбинации |
|
| Автор: | ГеоргиД [ Съб Дек 19, 2015 4:44 am ] |
| Заглавие: | Re: MSP430G2XXX ADC10CTL питане. |
ike беше прав, поиграх си с потенциометър и диоди, за да разбера как работи сега е по лесно :] |
|
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|