Почему мы используем HX711 с ячейкой загрузки (почему нам нужно преобразование A в D)?
Обычно мы усиливаем сигнал от тензодатчика, но зачем нужно преобразование А в D (аналого - цифровое)?
@Amaresh, 👍0
Обсуждение2 ответа
HX711-это не более чем чувствительный усилитель, который принимает крошечные сигналы от датчика нагрузки и усиливает их в сочетании с АЦП высокого разрешения.
Вы можете обойтись без HX711, но сигналы такие крошечные, а АЦП Arduino с таким низким разрешением, что результаты бесполезны.
Вы можете создать свой собственный усилитель с операционными усилителями и использовать внутренний АЦП Arduino, и результаты будут разумными, хотя разрешение будет отстойным.
Вы можете использовать другой чип АЦП с высоким разрешением, чтобы увеличить разрешение АЦП, чтобы вы могли измерять более точные веса.
Или... вы можете просто сделать все это в одном чипе с HX711.
Это кажется неправильным: "Затем Arduino использует свой внутренний АЦП для преобразования этого аналогового сигнала...". HX711 имеет свой собственный внутренний 24-разрядный АЦП. Я добавил ответ для дальнейшего объяснения. Кроме того, вы сказали "HX1711", но, по-моему, хотели сказать "HX711"., @Gabriel Staples
@GabrielStaples Так оно и есть. Я никогда ими не пользуюсь, поэтому не знаю их внутреннего устройства., @Majenko
Почему мы используем HX711 с ячейкой загрузки (почему нам нужно преобразование A в D)?
Этот вопрос состоит из 2 частей:
Часть 1:
Почему нам нужно преобразование A в D?
Короче говоря: микроконтроллер-это цифровое устройство, поэтому он может иметь дело только с цифровыми, а не аналоговыми показаниями и данными.
Подробности:
Вам нужно аналого-цифровое преобразование после усиления сигнала ячейки загрузки, потому что микроконтроллер является цифровым, а не аналоговым устройством. Он имеет цифровой процессор, хранит цифровую информацию в конечных и дискретных переменных, состоящих из цифровых битов (1 или 0), и не может иначе работать, хранить, обрабатывать, передавать или делать что-либо в памяти с числом или значением, за исключением того, что число или значение сначала преобразуются в цифровые биты.
Часть 2:
Почему мы используем HX711 с ячейкой загрузки?
Короче говоря: сигналы напряжения, поступающие от ячейки нагрузки, настолько малы, что внутренний АЦП микроконтроллера (аналого-цифровой преобразователь) не может считывать их без предварительного усиления. HX711 усиливает крошечные сигналы тензодатчика, считывает их с помощью собственного внутреннего АЦП и отправляет на микроконтроллер, например Arduino, в виде цифровых данных.
Подробности:
Обычный Arduino на базе ATmega328 имеет только 10-битный АЦП, который возвращает значения от 0 до 2^10 - 1 или от 0 до 1023, в общей сложности 2^10 = 1024 значения. Предполагая, что ваше опорное напряжение равно 5 В, что является значением по умолчанию, это означает, что ваше разрешение измерения напряжения составляет всего 5 В/2^10 = 5 В/1024 = 4,88 мВ. Однако значения напряжения , возвращаемые (датчиком нагрузки по-моему, мостом Уитстона), гораздо меньше этого, поэтому необходимы усиление и лучший АЦП.
Вот HX711 (см. таблицу):
Он включает в себя операционный усилитель с коэффициентом усиления 32, 64 или 128, а также 24-битный АЦП, который имеет разрешение 2^24 = 16777216 приращений внутри HX711, вместо 2^10 = 1024 приращений внутри микроконтроллера ATmega328, который используется Arduino Uno, Nano или Mini. Таким образом, HX711 имеет разрешение , которое в 16777216/1024 = 16384 раза лучше, чем АЦП Arduino, а это означает, что даже без усиленияи при условии опорного напряжения 5 В этот АЦП уже имеет разрешение напряжения 5 В/16777216 = 0,298 уФ, что в 16384 раза меньше 4,88 мВ.
Резюме:
Итак, вы используете HX711 для считывания крошечных напряжений уровня нановольт или микровольт или около того с датчика нагрузки, поскольку Arduino не может считывать такие маленькие значения напряжения. Затем вы общаетесь с HX711 через то, что кажется битовым протоколом SPI, перемещая биты в него и из него, запрашивая у него показания. Он выполняет аналоговое усиление с помощью своего внутреннего операционного усилителя, а затем выполняет аналого-цифровое преобразование (A в D или АЦП), чтобы превратить это истинное аналоговое напряжение в двоичное (цифровое) число, которое может быть отправлено и обработано микроконтроллером, таким как Arduino. Для этого чтения на самом Arduino не используется АЦП.
Список литературы:
- Описание и библиотеки Sparkfun: https://learn.sparkfun.com/tutorials/load-cell-amplifier-hx711-breakout-hookup-guide
- Спецификация HX711 от Sparkfun: HX711 - "24-битный аналого-цифровой преобразователь (АЦП) для весов"
Интересно: понижение в ответе, который я придумал, исследовал, прочитал в таблицах данных и все еще считаю точным и правильным. Любые комментарии, объясняющие понижение, приветствуются., @Gabriel Staples
- Какова работа pulseIn?
- Сколько датчиков может поддерживать один модуль Arduino?
- Получение BPM из данного кода
- Как подключить более 10 датчиков к Arduino uno r3
- Как использовать два ультразвуковых датчика для управления двигателем 5 Вольт?
- Чтение датчика давления от 4 до 20 мА с использованием uno
- Что выбрать между датчиками температуры и влажности: AM230x или DHT22?
- SRF04 Ультразвуковой датчик - неточные показания
вам не нужен АЦП ... вы можете считывать вес с помощью калиброванного аналогового вольтметра, @jsotola
но если вы хотите вовлечь в процесс arduino ... arduino может обрабатывать только двоичные данные ... аналоговые данные не являются двоичными ... следовательно, требуется преобразование, @jsotola
Я имею в виду, что буду усиливать и посылать аналоговый сигнал непосредственно на Arduino, потому что в Arduino есть аналоговые контакты?Я прав, @Amaresh
да, у arduino есть аналоговые контакты ... вход и выход ... ваш пост какой-то рассеянный ... вы спросили, почему требуется преобразование A в D ... похоже ты сам не знаешь о чем просишь, @jsotola
Но вы только что сказали что arduino не может обрабатывать аналоговые данные, @Amaresh
Я сомневаюсь, что если я могу напрямую отправить усиленный аналоговый сигнал непосредственно на плату, то зачем мне нужно A-D(asauming arduino сможет обнаружить сигнал)?, @Amaresh
Может ли кто-нибудь помочь мне с вышеуказанным вопросом @majenko ,jsotola, @Amaresh