Микроконтролери и електроника
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 регистрите.

Цитат:
ADC10MEM е 1023 което като се има в предвид напрежението е ок ?

Това са само 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 питане.

ГеоргиД написа:

Та мисля че ( не е задалжително да съм прав), че със sensor_value = BIT3; искам променливата да приема дата от датчика

Значи първо се научи, как да мигаш светодиод и като задобрееш в това, пиши пак в тази тема да ти кажа от къде да си дръпнеш 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 си работи нормално не трябва да се правят никакви магии, четеш дейташита и си тръгва.
Просто тайната е, че с

Код:
#define BIT3 8;
sensor_value = BIT3;

не можеш да прочетеш данните от сензора.

Автор:  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/