Проблема с применением цифрового потенциометра

Я начинаю, когда речь идет об электронике, кодировании и т. д. (это практически первый раз, когда я сделал что-то подобное), поэтому при создании приложения, которое должно вибрировать вибрационный двигатель с силовым основанием на измерении расстояния, выполненном ультразвуковым дальномером, я столкнулся с проблемой.

Цифровой потенциометр MCP 41010, кажется, пропускает электроэнергию только тогда, когда ему предоставляется SPI.transfer (128). Любое другое число полностью прекращает поток электроэнергии.

Я попробовал некоторые адреса, такие как 00, 0x00, 0x01 и 0x04, чтобы заменить 0, и результат был таким же. С адресами 0x11 и 0x08 цифровой потенциометр вообще не реагировал.

В дополнение к коду, который у меня есть, я попробовал просто скопировать в некоторые учебные пособия, которые я нашел из Интернета, например, этот Цифровой потенциометр, не затухающий светодиод , не понимая при этом команд, форматирует все, что хорошо. С этим кодом я получил вибрацию, которая, похоже, не исчезла или не исчезла вообще, поэтому проблема остается (у меня нет возможности правильно ее проверить).

Итак ... что я делаю неправильно и как это исправить?

Спасибо!

 введите описание изображения здесь>> </a> </p>

<p> Во время создания кода использовалось много руководств. </p>

<pre>
#include <SPI.h>

int vcc = 2; //прикреплять вывод 2 к vcc
int trig = 3; //прикреплять контакт 3 к Trig
int echo = 4; //прикреплять вывод 4 к Echo
int gnd = 5; //прикреплять вывод 5 к GND

int shortest = 250;
int longest = 12000;

int CS = 10; //для digi pot


void setup () {

  SPI.begin ();
  pinMode (vcc, OUTPUT);
  pinMode (gnd, OUTPUT);
  pinMode (CS, OUTPUT); //для digi pot
  //инициализация последовательной связи:
  Serial.begin (9600);

}

void loop ()
{
  digitalWrite (vcc, HIGH);
  //устанавливаем переменные для длительности пинга,
  //и расстояние в дюймах и сантиметрах:
  длительная продолжительность;
  
  //PING))) запускается HIGH-импульсом в 2 или более микросекундах.
  //Дайте короткий короткий импульс для обеспечения чистого импульса HIGH:
  pinMode (триггер, OUTPUT);
  digitalWrite (триггер, LOW);
  delayMicroseconds (2);
  digitalWrite (триггер, HIGH);
  delayMicroseconds (5);
  digitalWrite (триггер, LOW);
  
  //Тот же вывод используется для считывания сигнала из PING)): a ВЫСОКИЙ
  //импульс, продолжительность которого - это время (в микросекундах) от отправки
  //пинга на прием его эха от объекта.
  pinMode (эхо, INPUT);
  duration = pulseIn (эхо, HIGH);

  если (длительность> 200 & & длительность <220)
  //Ограничение нежелательного, случайного появления измерения расстояния
  //сделал бесполезным более поздний код, хотя
    {
     Serial.print («Ошибка»);
     Serial.print (продолжительность);
     Serial.print (

2 голоса | спросил user16665 26 Jam1000000amTue, 26 Jan 2016 00:10:49 +030016 2016, 00:10:49

1 ответ


3

Цифровые потенциометры не являются хорошим выбором для управления скоростью двигателя. Они предназначены только для приложений с очень низким током: такие, как установка точек смещения для ОУ и т. Д. - вещи, в которых вы бы использовали небольшой кусочек триммера, а не большой релейный усилитель .

Вместо этого вы должны управлять двигателем с помощью PWM и транзистора ( вот хороший учебник ).

Но чтобы помочь вам понять цифровой потенциометр, и вы сможете работать с ним лучше:

Шаг первый всегда должен читать таблицу данных . Это детализирует протокол связи SPI для вас, чтобы вы могли знать, что означают цифры.

В этом случае протокол состоит из двух байтов - байта команды и байта данных.

Байт команды состоит из следующих элементов:

 введите описание изображения здесь>> </a> </p>

<p> Как вы можете видеть, он состоит из двух частей - команды и переключателя потенциометра. Поэтому, чтобы установить сопротивление потенциометра 0, вам нужно создать командный байт с командой записи и кодом для потенциометра 0. Это будет <code>---- +: = 0 =: + ----</code> или 0x11 в шестнадцатеричном формате. Таким образом, ваша транзакция будет выглядеть так: </p>

<pre><code>---- +: = 1 = + ----</code></pre>

<p> Еще одна важная часть таблицы - электрические характеристики. Это таблица, в которой указаны минимальные, типичные и /или максимальные значения для разных параметров. Важным здесь является  ток стеклоочистителя , который он заявляет как допустимый между -1mA и + 1mA. Это максимальный ток, который вы можете провести через цифровой потенциометр, прежде чем рискуете повредить его. Вот почему это не хорошо для питания таких вещей, как двигатели, независимо от того, насколько они малы. </p></body></html>

ответил Majenko 26 Jam1000000amTue, 26 Jan 2016 00:35:25 +030016 2016, 00:35:25

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132