| 
				
				МД импульсный на Arduino
				 | 
 | 
|   | Сообщение # 1        
 | 
autoelectrician 
 
 
   
Постов: 47  
 
ОК   | 
МД импульсный на Arduino принцип схемы от пирата
  Но есть одно но, надо объединить два разных скетча, я в Arduino   сколько не пытался не моё, может кому пригодится и переделают эти скетчи
  Там нужно добавить управление кнопочным потенциометром X9C104S у него 99 положений 100кОм, сильно не пинайте схему набросал я, вроде ошибок нет
  
 Код #define UD  2                          // выходы к которым подключен модуль #define INC 3 #define CS  4
  #define BTN_UP 5    //пины, к которым подключены кнопки. Один конец кнопки - к пину, второй - на землю напрямую. Резисторы никакие не нужны. #define BTN_DOWN  6
  int pause = 300;//пауза между переключениями ползунка при удержании кнопки
  void setup() {   pinMode(BTN_UP, INPUT_PULLUP);         //настроил пины с кнопками на ввод информации с кнопок   pinMode(BTN_DOWN, INPUT_PULLUP);
    pinMode(INC, OUTPUT);   pinMode(UD, OUTPUT);   pinMode(CS, OUTPUT);   digitalWrite(CS, HIGH);                         // выключаем микросхему }
  void loop() {   if (!digitalRead(BTN_UP))//если нажата кнопка "вверх"   {     delay(20);//антидребезг     up();//переместили ползунок на единицу вверх     delay(pause);//антидребезг   }
    if (!digitalRead(BTN_DOWN))   {     delay(20);//антидребезг     down();//переместили ползунок на единицу вниз     delay(pause);//антидребезг   } }
  void up()// поднимает ползунок в верх на 1 ступень {                               digitalWrite(UD, HIGH);             // на U/D подаем единицу      digitalWrite(INC, HIGH);            // и на INC тоже   digitalWrite(CS, LOW);              // включаем микросхему   delayMicroseconds(4);               // ждем      digitalWrite(INC, LOW);             // дергаем вход INC   delayMicroseconds(4);   digitalWrite(INC, HIGH);   delayMicroseconds(4);    ///digitalWrite(INC, LOW);                  // в этом случаи положение ползунка записано не будет   digitalWrite(CS, HIGH);             // выключаем микросхему и записываем положение в EEPROM }
  void down()// опускаем ползунок в вниз на 1 ступень {                             digitalWrite(UD, LOW);      digitalWrite(INC, HIGH);   digitalWrite(CS, LOW);   delayMicroseconds(4);      digitalWrite(INC, LOW);   delayMicroseconds(4);   digitalWrite(INC, HIGH);   delayMicroseconds(4);
    digitalWrite(CS, HIGH); }
   В схеме не указан сам К157УД2 а только точки соединений к ногам, и за того что при разводки дорожек не задействованные ноги будут мешать и место свободное занимают, будут припаиваться те которые задействованные, и также с Arduino, ниже фото приведён как пример
  
  В этом скетче генератор и светоиндикация, пару светодиодов удалить они там лишние пики до них не разу не доходили,
  
 Код unsigned int sum_num = 0; byte i=0; void setup() { DDRB = 0xFF; // all out DDRD = 0xFF; // Устанавливаем цифровые пины как выходы pinMode(14,INPUT); // Устанавливаем аналоговый пин A0 как цифровой вход } void loop() { PORTD = 0; PORTB = B11110000; // переводим пины порта B в 1, открывая т.о. ключ (turn on) delayMicroseconds(200); // wait 200 микросекунд PORTB = 0; // закрывааем ключ, прерывая ток в поисковой катушке (turn off - interrupt circut in search coil ) for ( i=0; i<255; i++){ sum_num = sum_num + digitalRead(14); } PORTD = sum_num; // посылаем на индикатор send to LEDs delay (4); sum_num = 0; } 
  В той и этой схеме задействованы те же ноги на Arduino nano, у меня сейчас работают два Arduino nano на первом управление потенциометром на втором всё остальное, и всё это у меня стабильно работает чуйка та же, кнопка автонастройки мне не нужна как в других схемах применена обработка через Arduino, родной звук от операционного к157уд2, и почему цифровой потенциометр ? чтоб до точности иногда можно была за грубить чуйку и тд
  Потом когда скетч будет готов и какие пины будут задействованы, сделаю разводки дорожек и тд, а если нет то нет  
  Этот вариант больше подойдёт для начинающих юных учеников любителей по сборке на Arduino залить скетч и воткнуть ножками на плату урезоного пирата 
 
 |  
  | 
|   | Сообщение # 2        
 | 
melan 
 
 
   
Постов: 999  
 
Друзья   | 
Цитата autoelectrician (  )   обрубок от пирата  И зачем??? Разве как лабораторная работа. 
 |  
  | 
|   | Сообщение # 3        
 | 
apeks 
 
 
   
Постов: 2197  
 
Друзья   | 
питон есть теперь надо пиарду    ардуина даже для клона "жирная" 
 |  
  | 
|   | Сообщение # 4        
 | 
atoll07 
 
 
   
Постов: 574  
 
U   | 
Цитата autoelectrician (  )   Нужна помощь, надо объединить два разных скетча  ..не вдаваясь в совершенно правильно поставленный вопрос:
 Цитата melan (  )   И зачем???  (так как параметры MD Пират, не только не улучшаются, но и могут быть несколько ухудшены)... ..писать я за вас программу я не имею возможности (но некоторым не зависящим от меня обстоятельствам), но могу сделать подсказку: 1) организация требуемого импульса накачки (в вашем случае 200мкС и 4 мС прописано в скетче) обязательно через прерывания по таймеру (подпрограмма обработки прерываний).. 2) регулировка чувствительности кнопками, должна быть реализована через внешние прерывания (подпрограмма обработки внешних прерываний).. .. и еще, если уж использовали микроконтроллер, то просто (в основной теле скетча) пропишите красивый многотональный звук (используйте условия и стандартную функцию "тон").. избавите Пирата от одного его существенного недостатка - раздражающего рева динамика.. 
 |  
  | 
|   | Сообщение # 5        
 | 
-vlad- 
 
 
   
Постов: 569  
 
U   | 
autoelectrician, Скетч, Вам писать ни кто не будет(на халяву).Принципиалку, по которой Вам нужно продвигаться прикрепляю: Я бы в таком направлении двигался и управление X9C104S возложил бы на ардуино,мне кажется это самое верное предложение.  
 
 |  
  | 
|   | Сообщение # 6        
 | 
autoelectrician 
 
 
   
Постов: 47  
 
ОК   | 
-vlad-, зря старались с обрисовкой фотографии, я там описал почему их в схеме к157уд2 и Arduino не указаны, а только точки соединений к ним
   
 
 |  
  | 
|   | Сообщение # 7        
 | 
-vlad- 
 
 
   
Постов: 569  
 
U   | 
 autoelectrician, Повторюсь, скетч Вам писать ни кто не будет просто так, а в крации все зависит от напряжения которые вы будете указывать на ардуино,то есть изменение напряжения на выходе. Это все указывается в скетче при отрицательных импульсах, я же вам отправил даташит по микре. 
 |  
  | 
|   | Сообщение # 8        
 | 
atoll07 
 
 
   
Постов: 574  
 
U   | 
-vlad-,
 Цитата -vlad- (  )   Скетч, Вам писать ни кто не будет  ..в этом деле самое ценное - написать скетч самостоятельно     autoelectrician, ..без мероприятий предложенных в пост № 4 вы не сможете объединить два скетча в одном Ардуино (кстати, какой используете?)..  чтобы не потерять в чуйке, мое мнение - импульсы с выхода компаратора (ОР2) должны заводится на порт с внешним прерыванием (и обрабатываться программой обработки прерываний), так как опрос в цикле может пропускать короткие импульсы от компаратора (а это неизбежно снижает чуйку).. ..в дешевых ардуино, насколько мне помнится только 2 внешних прерывания..   
 |  
  | 
|   | Сообщение # 9        
 | 
autoelectrician 
 
 
   
Постов: 47  
 
ОК   | 
atoll07, я использую два Arduino nano, есть pro mini и uno, все они на ATmega328P
   
 
 |  
  | 
|   | Сообщение # 10        
 | 
atoll07 
 
 
   
Постов: 574  
 
U   | 
 autoelectrician,  ..во всех вами приведенных платах Ардуино используется контроллер - ATmega328, у которого: Внешние прерывания: выводы 2 и 3. Могут служить источниками прерываний, возникающих при фронте, спаде или при низком уровне сигнала на этих выводах. Для получения дополнительной информации см. функцию attachInterrupt(). ..вот на эти входы (на 2 или 3) и нужно подать сигнал от компаратора, а управление кнопками уже тогда мутить программно (то есть без использования внешнего прерывания)... или другой вариант - использовать Ардуино Леонардо... (4 внешних прерывания)... 
 |  
  |