0 / 0 / 0
Регистрация: 16.05.2022
Сообщений: 18
1

Весы на atmega8

29.07.2022, 22:45. Показов 1489. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Делаю весы на atmega8. Использую плату АЦП hx711 и 4 тензодатчика полумост до 50 кг.
Подключаю их по схеме в закрепе.
Также вот ссылки на проект в протеус https://drive.google.com/file/... sp=sharing
Ссылка на исходник из Microchip Studio https://drive.google.com/file/... sp=sharing
Для платы hx711 использую библиотеку
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include "hx711.h"
 
#define HX_PORT PORTB
#define HX_DDR  DDRB
#define HX_PIN  PINB
 
#define data 5
#define sck 4
 
void HX711_Init(void)
{   
    //sck выход, data - вход
    HX_DDR |= (1<<sck);
    HX_DDR &= ~(1<<data);
    
    //подтягиваем data к питанию, на sck устанавливаем лог.единицу
    HX_PORT |= (1<<data);
    HX_PORT &= ~(1<<sck);
}
 
uint32_t Weighing(void)
{
    //результат взвешивания
    uint32_t adc_value = 0;
    
    uint8_t i = 0;
    adc_value = 0;
 
    HX_PORT &= ~(1<<sck);
    //ждём пока закончится преобразование
    while((HX_PIN & (1<<data)));
    
    for(i=0; i<24; i++)
    {
        //поднимаем строб
        HX_PORT |= (1<<sck);
        //сдвигаем значение АЦП влево, теперь значение АЦП выглядит так .......0
        adc_value <<= 1;
        //опускаем строб
        HX_PORT &= ~(1<<sck);
        //проверяем, что на выводе data, если ноль то самый правый символ так и останется ноль .......0
        //если 1, то самый правый символ будет один .......1
        if(HX_PIN & (1<<data))
        {
            adc_value++;
        }   
    }
 
    //выборки будем брать с канала А, с коэф.усиления 128
    //поэтому стробируем еще один раз
    HX_PORT |= (1<<sck);
    HX_PORT &= ~(1<<sck);
    
    return adc_value;
}
Так вот, в протеус все работает, а в железе нет. В железе с нагрузкой и без выводит 8388607. Спаяно все вроде правильно.
В чем ошибка? В программе? Или в пайке?
Миниатюры
Весы на atmega8  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.07.2022, 22:45
Ответы с готовыми решениями:

Разница между ATMEGA8-16AI и ATMEGA8-16AU
Кто подскажет, в чем разница между ATMEGA8-16AI и ATMEGA8-16AU. Смотрю в Платане цены между ними...

Напольные весы на ATmega8
У меня курсовой проект по микропроцессорам на тему электронные напольные весы с индикатором с...

Весы
Имеются чашечные весы и гири с массами равными степенями двойки. На левую чашу весов помещается...

Весы
Помогите решить задачу. Имя входного файла: sum.dat Имя выходного файла: sum.sol Ограничение...

8
0 / 0 / 0
Регистрация: 16.05.2022
Сообщений: 18
29.07.2022, 23:02  [ТС] 2
Видео работы устройства https://drive.google.com/file/... sp=sharing
Фотографии в железе в закрепе. Спаяны датчики по схеме выше.
В программировании не профи, поэтому не ругайте строго)
Миниатюры
Весы на atmega8   Весы на atmega8  
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,514
30.07.2022, 10:12 3
Цитата Сообщение от andromeda8888 Посмотреть сообщение
Также вот ссылки на проект в протеус ...

Ссылка на исходник из Microchip Studio...
правила п 4.11
Картинки и любые другие файлы загружайте на форум, во избежание их удаления или потери на сторонних ресурсах. По этой же причине коды программ также должны находиться на форуме.
0
0 / 0 / 0
Регистрация: 16.05.2022
Сообщений: 18
30.07.2022, 12:41  [ТС] 4
Архив проекта в Proteus. Архив проекта в Microchip Studio.
Вложения
Тип файла: zip Prj.zip (75.5 Кб, 5 просмотров)
Тип файла: zip GccApplication5.zip (144.2 Кб, 7 просмотров)
0
22 / 26 / 4
Регистрация: 26.03.2017
Сообщений: 193
01.08.2022, 08:14 5
andromeda8888, Один из вариантов почему у тебя такое значение выводит, это что значения АЦП в зашкале. У нас на весах вагонных тоже используются тензодатчики. Только вот чтобы они начали что нибудь показывать, их необходимо нагрузить и выставить нуль. А когда витают в воздухе тоже белеберду выдают.
0
0 / 0 / 0
Регистрация: 16.05.2022
Сообщений: 18
03.08.2022, 19:19  [ТС] 6
Цитата Сообщение от ogner Посмотреть сообщение
значения АЦП в зашкале
Похоже на то. Изменил чувствительность тензодатчика в Proteus. Теперь в Proteus выводится тоже число 8388607 и не меняется. Что надо поменять в библиотеке, чтобы это исправить? Проект в Proteus в закрепе.
Вложения
Тип файла: zip Prj.zip (75.5 Кб, 2 просмотров)
0
0 / 0 / 0
Регистрация: 16.05.2022
Сообщений: 18
03.08.2022, 20:13  [ТС] 7
Нашел в чем ошибка. Но не знаю как ее исправить)

Вот, что написано об hx711:

Поскольку на выходе измерительного моста изменяется напряжение, то именно оно преобразуется в бинарный код. Диапазон контролируемых напряжений зависит от выбранного коэффициента усиления. Если коэффициент равен 128, диапазон измеряемых напряжений варьируется от – 20 mV до + 20 mV, выбор коэффициента усиления 64 определяет пределы измерения от – 40 mV до + 40 mV и при коэффициенте равном 32 пределы измерения определяются величинами – 80 mV и + 80 mV. Эти данные будут корректными только при напряжении питания +5 V. Если входное напряжение выйдет за нижнюю границу диапазона, АЦП выдаст код 800000h, а если за верхнюю, то код будет 7FFFFFh.



У меня как раз выводит 8388607 в десятичной системе, а если в шестнадцатиричной системе, то 800000. Значит это выход за нижнюю границу. Только какого? Питания 5В или диапазона от – 20 mV до + 20 mV?
0
0 / 0 / 0
Регистрация: 16.05.2022
Сообщений: 18
03.08.2022, 23:07  [ТС] 8
Вообщем подключил тензодатчик до 3 кг 4-х проводной и другую зеленую плату hx711. Их есть две версии. Одна красная, другая зеленая. Все работает.

Потом присмотрелся к моим тензодатчикам до 50 кг. На картинке в магазине 3 провода: красный, белый, черный. У моих же красный, белый, зеленый. И мне казалось, что зеленый и черный это одно и тоже. Но потом понял, что нет. Подключил один тензодатчик с 2 резисторами, но только зеленый не заземлил, то есть не E-, а к A-подключил. И тоже все заработало. Получается зеленый и черный провод у полумостовых датчиков не одно и тоже.

сподвигло на это вот эта статья https://wiki.iarduino.ru/page/hx_711_with_tenzo/
Весы на atmega8

Но теперь не знаю, как подключить 4 тензодатчика вот по этой схеме
Весы на atmega8

Похоже буду новые покупать, только чтобы провода были красный, белый, черный.
0
1 / 1 / 0
Регистрация: 26.05.2021
Сообщений: 80
11.09.2022, 11:20 9
Кто вас учил так датчики подключать? Подключайте в паралель.
Ваше АЦП выдает знаковый бит. Вам нужно убрать его и преобразовать в беззнаковый все число. можно сделать маской на 0х800000
0
11.09.2022, 11:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.09.2022, 11:20
Помогаю со студенческими работами здесь

Весы
Помогите закончить программу. Имя входного файла: sum.dat Имя выходного файла: sum.sol...

Весы
Есть Вот такая задача. Условие во вложении. Не понимаю, как к ней подступиться со стороны жадного...

Весы
Напишите класс Balance для описания весов с двумя чашами. На левую и правую чашу объекта будут...

Электронные весы
Неплохие задачи по С++! Подзабыл его( выручайте, буду очень благодарен 4. Ваша задача - грамотно...

Падение на весы
Здравствуйте уважаемые форумчане. Планета Земля. Ускорение свободного падения и прочие...

Задача: Весы
После того, как Урфин Джюс овладел Изумрудным городом, у него появилось любимое занятие —...

Нарисовать весы
помогите нарисовать! вообще не умею и не понимаю как это делать( рисунок не идеальный но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru