Возникли проблемы с запуском моторного щита от внешнего источника питания

Прошу прощения, если сразу не дам важную информацию, я новичок в arduino/схемах любого рода. Я постараюсь включить как можно больше информации.

Некоторое предисловие: В настоящее время я работаю над проектом по выработке электроэнергии с помощью ТЭГ (термоэлектрический генератор). Установка, которая у меня есть в настоящее время, способна выдавать более 9 В. Мотор, который я использую, может работать при прямом подключении к проводам ТЭГ, т.к. они производят достаточно электроэнергии для работы. Из-за характера проекта используется стопорный механизм через фоторезистор и светодиод. По сути, когда световой сигнал, улавливаемый фоторезистором, достаточно низок, питание двигателя отключается.

Поэтому до недавнего времени двигатель и плата Arduino/щит двигателя (Arduino UNO, Arduino Motor Shield Rev3) работали от батареи 9 В. Все работало исправно, мотор запускался, когда нужно, и останавливался, когда нужно. Как только я переключился на ТЭГ, установка перестала работать (двигатель перестал работать). Что странно, так это то, что если я подключу вольтметр к каналу 1 моторного щита, я покажу 6-7 В (некоторое падение напряжения, но не резкое), когда светодиод горит, и 0, когда светодиод не горит. Таким образом, все, казалось, все еще работает, но сам двигатель просто не работает. На самом деле, когда светодиод горит, он издает очень слабый шум в течение секунды, но не работает.

Единственное, о чем я могу думать, это то, что ток, создаваемый ТЭГ, достаточен только для питания двигателя при прямом подключении, но при косвенном подключении через плату, таким образом питая плату, ему больше не хватает силы тока.

Я включил написанный для него код, который отлично работал с 9-вольтовой батареей, питающей мотор/плату.

const int sensorPin = A5;
const int ledPin = 5;
int lightLevel;

void setup(){
  Serial.begin(9600);
  pinMode(12,OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(ledPin, OUTPUT);
}

void loop(){
  lightLevel = analogRead(sensorPin);
  lightLevel = constrain(lightLevel, 0, 800);
  Serial.println(lightLevel);

  if(lightLevel < 200){
    digitalWrite(9,LOW); 
    digitalWrite(12,HIGH);
    analogWrite(3,255);
  }
  if(lightLevel > 200){
    digitalWrite(9,HIGH);
    analogWrite(3,0);}
}

, 👍0

Обсуждение

возможно, полярность ТЭГ перепутана ...... вы можете запустить простой скетч мигания светодиода?, @jsotola

Почему вы никогда не пишете контакт 12 LOW? Должен ли он всегда быть ВЫСОКИМ? С чем это связано?, @Delta_G


1 ответ


1

Попробуйте развязывающий конденсатор на вашем ТЭГ: 100 мкФ/35 В (+ на +). Это позволит избежать микропадений мощности... Убедитесь, что электродвигатель аппаратного привода работает при напряжении ниже 9 В.

,