roboforum.ru

Технический форум по робототехнике.
Текущее время: 18 июл 2025, 11:06

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Как правильно считывать PWM?
СообщениеДобавлено: 12 сен 2011, 22:10 
Не в сети

Зарегистрирован: 12 сен 2011, 21:34
Сообщения: 10
Добрый день!

Требуется помощь! Не считываются показания цифрового компаса.

Имеется:

Arduino Uno SMD
IO Expansion Shield For Arduino(V5)
Цифровой компас CMPS-03
Компас может отдавать значения по интерфейсам l2c и PWM.

Пытаюсь считать значения PWM.

Из документации:

The PWM signal is a pulse width modulated signal with the positive width of the pulse representing the angle.
The pulse width varies from 1mS (0° ) to 36.99mS (359.9° ) – in other words 100uS/° with a +1mS offset. The
signal goes low for 65mS between pulses, so the cycle time is 65mS + the pulse width - ie. 66ms-102ms. The
pulse is generated by a 16 bit timer in the processor giving a 1uS resolution, however I would not recommend
measuring this to anything better than 0.1° (10uS). Make sure you connect the I2C pins, SCL and SDA, to the
5v supply if you are using the PWM, as there are no pull-up resistors on these pins.



Компас подлключен на цифровой порт 3. Проблема в том , что на вход всегда идет "1".

Проверял следующим кодом:

const int pwm_pin = 3;
int pwm_val = 0;
int pwm_val_t = 0;

void setup()
{
Serial.begin(9600);
pinMode(pwm_pin, INPUT);

}

void loop() {

pwm_val=digitalRead(pwm_pin);

//if (pwm_val=0) pwm_val_t= pulseIn(pwm_pin, HIGH ) ;
if ( pwm_val=0) Serial.print(0); ;

//Serial.println();

//delay(200);

}



Что я не так делаю ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно считывать PWM?
СообщениеДобавлено: 12 сен 2011, 22:29 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Через PulseIn вроде надо читать PWM...

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно считывать PWM?
СообщениеДобавлено: 12 сен 2011, 22:33 
Не в сети

Зарегистрирован: 12 сен 2011, 21:34
Сообщения: 10
через PulseIn не получилось, см. закомментареный код.
Мне кажется все из-за того, что на вход постоянно идет "1"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно считывать PWM?
СообщениеДобавлено: 12 сен 2011, 22:40 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Кстати, а вы зачем вот тут:

Цитата:
if ( pwm_val=0) Serial.print(0); ;


Грохаете переменную pwm_val, устанавливая её в ноль?

Это же Си, тут надо писать:
Цитата:
if ( pwm_val==0) Serial.print(0); ;

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно считывать PWM?
СообщениеДобавлено: 12 сен 2011, 22:54 
Не в сети

Зарегистрирован: 12 сен 2011, 21:34
Сообщения: 10
с "=" вместо "==" поправил, это конечно ошибна.
Но все равно не пашет.
Вот такой код:
Код:
const int pwm_pin    = 3;   
int pwm_val    = 0;
int pwm_val_t    = 0;

void setup() {
  Serial.begin(9600);
  pinMode(pwm_pin, INPUT);     
}

void loop() {
  pwm_val_t= pulseIn(pwm_pin, HIGH ) ;
  Serial.print(pwm_val_t);
  //pwm_val=digitalRead(pwm_pin); 
  //if (pwm_val==0)   pwm_val_t= pulseIn(pwm_pin, HIGH ) ; 
  // if ( pwm_val==0)   Serial.print(0); ;     
  //Serial.println();
  delay(200);                     
}


pwm_val_t всегда "0"

А вот такой код:
Код:
const int pwm_pin    = 3;   
int pwm_val    = 0;
int pwm_val_t    = 0;

void setup() {
  Serial.begin(9600);
  pinMode(pwm_pin, INPUT);     
}

void loop() {
  //pwm_val_t= pulseIn(pwm_pin, HIGH ) ;
  //Serial.print(pwm_val_t);
  pwm_val=digitalRead(pwm_pin); 
  //if (pwm_val==0)   pwm_val_t= pulseIn(pwm_pin, HIGH ) ; 
  if ( pwm_val==0)   Serial.print(0); ;     
  //Serial.println();
  //delay(200);                     
}

вообще ничего в serial не пишет


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно считывать PWM?
СообщениеДобавлено: 12 сен 2011, 22:57 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Компас то правильно подключили? 4 пином к PWM-IN ? линии SCL,SDA и 5V зацепили на 5 вольт? Земля подцеплена?

По поводу SCL,SDA:
Цитата:
Make sure you connect the I2C pins, SCL and SDA, to the 5v supply if you are using the PWM, as there are no pull-up resistors on these pins.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно считывать PWM?
СообщениеДобавлено: 12 сен 2011, 23:31 
Не в сети

Зарегистрирован: 12 сен 2011, 21:34
Сообщения: 10
шилд распаяный уже
http://www.inexglobal.com/products.php?type=addon&cat=app_sensors&model=cmps03
трудно ошибиться, разъемы стандартные

Кроме варианта с кривыми руками , у меня еще есть следующие варианты:

Грешу все же на IO Expansion Shield For Arduino(V5), т.к. если подключаю кнопку http://www.megachip.ru/item.php?item_id=2466000 то в нажатом состоянии с нее приходит сигнал "0", а в состоянии покоя "1".

Добавлено спустя 9 минут 44 секунды:
SCL,SDA еще не подключал, т.к. в соответствии с докой сигнал можно снимать как с l2c, так и с pwm


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно считывать PWM?
СообщениеДобавлено: 13 сен 2011, 10:27 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
Хм, есть нормальный цифровой интерфейс, зачем с шимом мучаться то?

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно считывать PWM?
СообщениеДобавлено: 13 сен 2011, 11:06 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
У вас ножка назначена входом?

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно считывать PWM?
СообщениеДобавлено: 13 сен 2011, 11:12 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Вроде да: pinMode(pwm_pin, INPUT);

Я думаю у него просто SCL и SDA не подтянуты к 5В, как требуется по даташиту.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно считывать PWM?
СообщениеДобавлено: 13 сен 2011, 11:28 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
т.е. сам модуль не снижает ШИМ - тогда использовать ФНЧ - резистор 10 кОм и конденсатор подключить и померить мультиметром напряжение.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно считывать PWM?
СообщениеДобавлено: 14 сен 2011, 00:15 
Не в сети

Зарегистрирован: 12 сен 2011, 21:34
Сообщения: 10
Vooon писал(а):
Хм, есть нормальный цифровой интерфейс, зачем с шимом мучаться то?

Сейчас под рукой нет соответствующих проводочков, да и хотел разобраться как считывать PWM

Добавлено спустя 1 минуту 13 секунд:
вот как все подключено, см. вложение

Добавлено спустя 1 минуту 59 секунд:
=DeaD= писал(а):
Я думаю у него просто SCL и SDA не подтянуты к 5В, как требуется по даташиту.


А разве это обязательно, в документации написано, что SCL и SDA можно вообще не использовать при снятии сигнала.


Вложения:
IMAG0164_1.jpg
IMAG0164_1.jpg [ 357.22 КиБ | Просмотров: 2574 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно считывать PWM?
СообщениеДобавлено: 14 сен 2011, 00:53 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
bod писал(а):
А разве это обязательно, в документации написано, что SCL и SDA можно вообще не использовать при снятии сигнала.

В документации написано:
Цитата:
Make sure you connect the I2C pins, SCL and SDA, to the 5v supply if you are using the PWM, as there are no pull-up resistors on these pins.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно считывать PWM?
СообщениеДобавлено: 14 сен 2011, 10:52 
Не в сети

Зарегистрирован: 12 сен 2011, 21:34
Сообщения: 10
=DeaD= писал(а):
bod писал(а):
А разве это обязательно, в документации написано, что SCL и SDA можно вообще не использовать при снятии сигнала.

В документации написано:
Цитата:
Make sure you connect the I2C pins, SCL and SDA, to the 5v supply if you are using the PWM, as there are no pull-up resistors on these pins.


На основании вот этой инфы из доки:
There are two ways of getting the bearing from the module. A PWM signal is available on pin 4, or an I2C interface is provided on pins 2,3.
я делаю вывод , что можно использовать только pwm


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно считывать PWM?
СообщениеДобавлено: 14 сен 2011, 11:10 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Так и питание тогда не подавайте, в приведенном вами предложении про питание ведь тоже не слова! 8)

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO