Простой скетч
- Войдите на сайт для отправки комментариев
Ср, 05/06/2019 - 07:03
Ребята, всем привет! Цифровой потенциометр MCP41100 и ардуино нано. Нужно чтобы сопротивление резистора постоянно менялось от 0 до 100ком. А у меня изменяется от 0 до 70ком. Помогите пожалуйста найти ошибку!
#include <SPI.h> byte address = 0x11; int CS= 10; int i=0; void setup() { pinMode (CS, OUTPUT); SPI.begin(); } void loop() { for (i = 0; i <= 256; i++) { digitalPotWrite(i); delay(15); } delay(150); for (i = 256; i >= 0; i--) { digitalPotWrite(i); delay(15); } ;} int digitalPotWrite(int value) { digitalWrite(CS, LOW); SPI.transfer(address); SPI.transfer(value); digitalWrite(CS, HIGH); }
Я с таким дело не имел, но согласно даташиту в него надо два байта каждый раз отправлять - командный и данные. А тут только один отправляется
The first byte sent is always the command byte, followed by the data byte.
Команду-то он подаёт. Только назвал её адресом зачем-то. А вот правильно ли измеряет...
Я бы просто 0xFF записал в оба Pot-a безо всяких циклов (0x13).
Впрочем, есть у меня два X9C одного номинала с алиэкспресса - один крутится до 10К, второй до 9К.
Свежий код давайте, откуда мне знать что Вы там исправили
DC CHARACTERISTICS: 100 kΩ VERSION
min typ max
Nominal Resistance R 70 100 130 kΩ TA = +25°C (Note 1)
может просто дело в этом?
DC CHARACTERISTICS: 100 kΩ VERSION
min typ max
Nominal Resistance R 70 100 130 kΩ TA = +25°C (Note 1)
может просто дело в этом?
Свежий код давайте, откуда мне знать что Вы там исправили
То есть у него погрешность +-30ком. Не думал что так много.
самого удивило, 30% погрешность, это как "лаптем по карте"...
Это легко проверить.
Поставьте в setup, в самый конец digitalPotWrite(255);. А loop оставьте пустым. И замерьте его максимальное. Странно, что Вы раньше этого не сделали.
Кстати, почти уверен, что Вы измеряете сопротивление неправильно. Нарисуйте схему измеренния и скажите чем именно измеряете.
Поставьте в setup, в самый конец digitalPotWrite(255);. А loop оставьте пустым. И замерьте его максимальное.
Запитал ардуину от кроны - 90ком максимальное сопротивление, если от USB - макс. 70ком.
Переставьте функцию digitalPotWrite (строки №№ 30-36) выше функции setup.
И всего определяйте/объявляйте функции ДО использования.
Вы не написали чем и как (схема) Вы измеряете сопротивление.
Совет ЕвгенийП правильный, но можно обновить IDE до последней и ей будет похрену где объявлена функция, до или после еЁ использования.
но еще раз, суровые "челябинские мужики" делают как советовал Евгений.
АПД. оба байта в сетап, а то только один и запишите :)))))))))