arduino - замена линейного потенциометра

Тема в разделе "Arduino & Shields", создана пользователем ДмитрийД, 9 мар 2016.

  1. ДмитрийД

    ДмитрийД Нерд

    Есть устройство, в устройстве линейный потенциометр(на 2 оси) - джойстик, с помощью которого можно рулить поворотами мотора.
    https://www.sparkfun.com/products/9426
    Нужно - вместо него воткнуть арду со своей логикой и с арду рулить поворотами мотора, т.е иммитировать управление от линейного потенциометра.
    Как правильно это сделать?
     
  2. ostrov

    ostrov Гуру

    Как работает джойстик? Стандартный выдает по двум осям аналоговое значение от 0 до 1023, где 512 это середина. Этот так же? Если да, то наверное использовать ШИМ на двух ногах, подогнав его под нужные значения. Или ЦАП.
     
  3. Unixon

    Unixon Оракул Модератор

    Цифровое сопротивление с SPI / I2C интерфейсом.
    Например, MCP41xxx / MCP42xxx, xxx - сопротивление 010 = 10кОм, 050 = 50кОм и т.п.
     
  4. Onkel

    Onkel Гуру

    есть и более простое решение- померять напряжение на высокопотенциальном выводе потенциометра (пусть это будет V<5 В), отключить средний вывод, подключить к любому ~выходу ардуино и выдавать на этот выход напряжение, меньшее или равное V. Метод годится, если V<= 5 В. Если V>5 В, то к выходу ~ ардуины подключаем мосфит с ттл управлением и дело в шляпе, нужно только подключить источник нужного напряжения V и рассчитать LC( RC) фильтр, лучше второго порядка.
     
  5. Unixon

    Unixon Оракул Модератор

    Если в МК нет своего ЦАПа, то проще поставить либо внешний ЦАП, либо цифровое сопротивление, чем сглаживать ШИМ и пытаться сделать из Г конфетку.
     
  6. Onkel

    Onkel Гуру

    абсолютно был бы с вами согласен, и даже сам бы только так и написал бы, будь мы на форуме уровня electronix. Но с учетом сопротивления материалов и написал именно так, как написал - 500 (почти) Гц шим ардуины отлично сглаживается фнч второго порядка при нужных нам временах - а это времена ручного управления, т.е. в самом быстром случае полсотни мс.
    пы сы у меня еще с советских времен 8 битные цапы 572ПА (если не ошибаюсь...) валяются, так и не нашел оказии их куда-нибудь приткнуть. Последний раз их с пользой использовал году так в 82, еще в дописюшную эру.
     
    Последнее редактирование: 9 мар 2016
  7. Unixon

    Unixon Оракул Модератор

    Вот поэтому и нужно озвучивать и продвигать правильные мысли, чтобы не приходилось каждый раз преодолевать сопротивление заново.
     
  8. ДмитрийД

    ДмитрийД Нерд

    Провожу эксперименты. Вот что получилось.
    С девайса конечно устройство где был джойстик соотв 4 провода на джойстик было - GND,3V,СИГНАЛ1, СИГНАЛ2.

    У меня есть 2 блока питания http://www.yarst.org/PRIVATE/DazhengPS305D.htm
    Подключаю их к GND, Сигнал 1 с блока 1, сигнал 2 с блока 2, кручу напряжение от 0 до 3В -устройство рулится корректно и без проблем, здорово.

    Подключаю ардуино и пытаюсь рулить , не работает, глючит.
    В арду(нано) схема такая: В 3,4 каналы подключен РЦ пульт, на 5,6 выходы подключены СИГНАЛ1, СИГНАЛ2, экспререминтальным путем подобрал цифры в арду, чтобы напругу выдавала точно такую же, какая выходила у родного устройства с потенциометром.И в итоге рулится только в 1 сторону, иногда глючит, дергается и тд.
    Не спец в электрике, что я неправильно делаю?
    Код (C++):
    int k,t,p,r;
    float pp;
    void setup() {
      // put your setup code here, to run once:
    pinMode(5,OUTPUT);
    pinMode(6,OUTPUT);
    pinMode(3,INPUT);
    pinMode(4,INPUT);
    Serial.begin(9600);
    }

    void loop() {
      // put your main code here, to run repeatedly:
    k=pulseIn(3,HIGH);
    t=pulseIn(4,HIGH);
    p=map(k,1095,1895,31,150);
    r=map(t,1095,1895,31,150);
    analogWrite(6,p);
    analogWrite(5,r);

    }
     
  9. ДмитрийД

    ДмитрийД Нерд

    Дело в частоте ШИМ мое предположение? Блок питания выдает 50 герц?
     
  10. Onkel

    Onkel Гуру

    cхемку покажите, а то так трудно со слов понять. Чем четче вы изложите ситуацию, тем больше людей с большим желанием захотят вам помочь.
     
  11. ДмитрийД

    ДмитрийД Нерд