Пульсация не работает при совместном заземлении

У меня есть стороннее устройство, создающее ШИМ-выход, которое я хочу измерить с помощью Arduino, проблема, с которой я столкнулся, заключается в том, что я разделил землю между двумя платами, что приводит к тому, что импульсный выход становится нулевым. (почему это происходит и как это исправить)

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

schematic

код:

#define pulse_ip 3
unsigned long duration;
int ontime,offtime,duty;
float freq,period;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  pinMode(pulse_ip, INPUT);
}
   
void loop() {
  // put your main code here, to run repeatedly:

  ontime = pulseIn(pulse_ip, HIGH);
  offtime = pulseIn(pulse_ip, LOW);
  period = ontime + offtime;
  freq = 1000000.0 / period;
  duty = (ontime / period) * 100;
  Serial.print(offtime);
  Serial.print("-");
  Serial.print(ontime);
  Serial.print("-");
  Serial.print(period);
  Serial.print("-");
  Serial.print(freq);
  Serial.print("-");
  Serial.print((duty * 255) / 100);
  Serial.print("-");
  Serial.println(duty);
  delay(1000);
  
}

, 👍1

Обсуждение

в чем заключается ваш вопрос?, @jsotola

почему я получаю ноль, когда делю землю, @Shahreza

вы уверены, что не получаете только случайные импульсы без общей основы?, @Juraj

@Juraj это хороший момент, может быть, я становлюсь случайным, позвольте мне еще раз проверить, @Shahreza

@Juraj Да, я верю, что вы правы, я получаю случайные числа, и как только я разделяю землю, она становится нулевой, @Shahreza

имеет ли смысл дважды вызывать Пульсейна? проверьте ссылку https://www.arduino.cc/reference/en/language/functions/advanced-io/pulsein/, @Juraj

"Причина, по которой я подключаю землю, заключается в том, что мне нужно измерить другие сигналы на этой плате."...нет, причина, по которой вы соединяете основания, заключается в том, что **вы должны**. https://majenko.co.uk/blog/our-blog-1/the-importance-of-sharing-grounds-12, @Majenko

@Majenko вы, конечно, правы, именно по этой причине я получал случайное число, @Shahreza

Какова (приблизительная) частота ШИМ-сигнала? И какие уровни напряжения?, @Majenko

@Majenko 3,3 В-это напряжение, частота шим 14,56 К, @Shahreza

вы должны указать аргумент тайм-аута, чтобы он работал быстрее. даже в этом случае он выходит за рамки аппаратного обеспечения и скорости процессора и, скорее всего, будет нечетким/шумным, если он вообще работает. Было бы лучше использовать RC-фильтр для преобразования ШИМ в аналоговое напряжение, затем разделить его до 0-5 В, а затем выполнить выборку полученного сигнала. Поскольку вам, по-видимому, требуется всего 1 образец в секунду, вы можете легко использовать большой конденсатор и усреднение выборки, чтобы получить очень плавное аналоговое напряжение., @dandavis


1 ответ


1

Без подключенного заземления сигнал на входном выводе, который вы считываете с помощью pulseIn, должен быть случайным шумом.

Два импульса, один из которых ожидает изменения МАКСИМУМА, а второй-НИЗКОГО, не имеют смысла, потому что при ВЫСОКОМ параметре pulseIn ждет, пока вывод перейдет с НИЗКОГО уровня на ВЫСОКИЙ, запускает синхронизацию, затем ждет, пока вывод опустится, и останавливает синхронизацию. Затем он возвращает длительность импульса в микросекундах.

,