Например TDA7294

Форум РадиоКот • Просмотр темы - DS18B20 в паре с STM32F103C8
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 19:38:14

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 29 ]    , 2
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Вт июн 02, 2020 15:20:00 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 157
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3328
Рейтинг сообщения: 0
Мурик писал(а):
USART занят под другие нужды.
В F103C8 3 USART. Все заняты?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Вт июн 02, 2020 15:44:10 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -25
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2525
Рейтинг сообщения: 0
на 100 датчиков понадобится 100 преобразователей CAN<->интерфейс датчика. Получится слишком дорого и громоздко.

Если датчики так далеко, что для связи придется CAN-шину использовать, то 1-wire здесь однозначно сядет в лужу! Либо вам придется активировать не одну, а две ноги МК для 1-wire: одну на прием, а вторую — через более-менее мощный транзистор — на передачу. Абы DS18 смогли подтяжку в сотню Ом пересилить… Но как бороться с шумами на километровой шине 1-wire, я вообще не представляю!
Добавлено after 1 minute 21 second:
USART занят под другие нужды. Ну и да, вопрос не об этом.

Таймер + DMA, понадобится задействовать лишь одну ногу, один канал DMA да один таймер с compare/capture.

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Вт июн 02, 2020 16:27:57 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 157
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3328
Рейтинг сообщения: 0
Eddy_Em писал(а):
Если датчики так далеко, что для связи придется CAN-шину использовать, то 1-wire здесь однозначно сядет в лужу!
Не поверите, 1Wire нормально работает.

Eddy_Em писал(а):
Либо вам придется активировать не одну, а две ноги МК для 1-wire: одну на прием, а вторую — через более-менее мощный транзистор — на передачу.
Ясень пень линия 1Wire подключена не на прямую к МК (это ненадежно при длинной линии), а через спец. адаптер.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Вт июн 02, 2020 17:22:45 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -25
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2525
Рейтинг сообщения: 0
через спец. адаптер.

И каждый датчик — через спец. адаптер. Круто.
Кроме того, я не встречал DS18 в нормальном формфакторе — чтобы его можно было на что-то наклеить. Т.е. он годится лишь чтобы его в гильзу запихнуть и с точностью +=слон измерять температуру газа (ну или с чуть лучшей точностью — температуру жидкости).

Что ж за задачи такие могут возникнуть, чтобы с точностью ±2°C нужно было измерять в сотне точек температуру воздуха, либо с точностью ±0.5°C — температуру жидкости? Бред какой-то.

Кстати, если такие задачи и возникнут вдруг, то можно взять 10-рублевый китайский МК (что у них там сейчас популярно — ch552?), к нему 5-рублевый преобразователь уровней для RS-485, обвязки еще на 5 рублей и рублевый терморезистор. Еще рублей 10 будет стоить печатная плата. Пайка - ну, рублей 20.
В общем, получается, что за стоимость идиотского DS18 мы получили вменяемый термодатчик с такой же паршивой точностью, но более удобным формфактором датчика + работающий на RS-485!!!

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Вт июн 02, 2020 19:54:24 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 157
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3328
Рейтинг сообщения: 2
Eddy_Em писал(а):
И каждый датчик — через спец. адаптер.
Где я такое написал? Он общий для всех датчиков.

Eddy_Em писал(а):
Что ж за задачи такие могут возникнуть, чтобы с точностью ±2°C нужно было измерять в сотне точек температуру воздуха, либо с точностью ±0.5°C — температуру жидкости?
Контроль за выходом температуры за допустимые пределы.

Eddy_Em писал(а):
Кстати, если такие задачи и возникнут вдруг, то можно взять 10-рублевый китайский МК (что у них там сейчас популярно — ch552?), к нему 5-рублевый преобразователь уровней для RS-485, обвязки еще на 5 рублей и рублевый терморезистор. Еще рублей 10 будет стоить печатная плата. Пайка - ну, рублей 20.
У вас так дешево. :shock: Может придете в нашу фирму и будете выполнять работу по такой цене? :))) Думаю вам рублей 500 на все компоненты в месяц даже много будет. :))) Да чуть не забыл, нужны не ширпотребные детальки, а качественные, т. е. заказ на Али не проконает :facepalm: потому что в случае сбоя из-за некачественного железа, разработчик должен оплатить за свой счет ремонт и стоимость простоя оборудования. :dont_know:
Ну что согласны работать дешево и качественно с гарантией стабильной работы оборудования? :)

Eddy_Em писал(а):
В общем, получается, что за стоимость идиотского DS18 мы получили вменяемый термодатчик
Который нужно калибровать и учитывать нелинейность измерения температуры терморезистором, причем каждый датчик в отдельности. :facepalm: Нет уж, сами пользуйтесь. :)))


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Вт июн 02, 2020 21:39:17 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Раньше, между прочим, эти датчики были в госреестре средств измерений... сейчас не в курсе.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Ср апр 21, 2021 21:16:33 
Родился

Зарегистрирован: Чт май 02, 2019 07:43:46
Сообщений: 8
Рейтинг сообщения: 0
Да чего вы кинулись код то кидать?

Eddy_Em писал(а):
VladislavS, так ведь и подход абсолютно разный: на аврке нет DMA, там реализовать 1-wire можно только двумя способами: таймер+прерывание или UART. А на STM32 можно таймер с DMA, можно USART с DMA…



А кто-нибудь может выложить код для STM32 где реализован 1-wire способом: таймер+прерывание?
А то сижу изобретаю велосипед.
USART не хочу использовать, к тому же не хочу подключать несколько DS18B20 на одну линию, хочу каждый датчики на отдельную ногу STM32, тут ни каких USART не хватит.
Пытался сам переписать свой старый код от AVR с delay() на использование таймера, но не пойму как в STM32 таймер работает, можно ли внутри прерывания таймера поменять значение перезагрузки (TIM_Period)?
Т.е. я хотел в начале слота сначала выдать на 1-wire 0, настроить таймер на 1мкс, запустить таймер, потом внутри прерывания таймера например, выдать на 1-wire 1 и перенастроить таймер например на 60мкс (окончание слота). Вот у меня такое впечатление, что внутри прерывания не перенастраивается таймер, может я вообще как-то неправильно таймер настроил. Может кто подскажет, что как то по другому нужно делать 1-wire на таймере.
Вот кусок моего кода работы с таймером (только не смейтесь, микроконтроллерами не занимаюсь, так только, разовую самоделку нужно сделать):

void TIM3_Set_Period(uint32_t a_us)
{

TIM_TimeBaseInitTypeDef TIMER_InitStructure;

TIM_TimeBaseStructInit(&TIMER_InitStructure);
TIMER_InitStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIMER_InitStructure.TIM_Prescaler = 71; //1 мкс
TIMER_InitStructure.TIM_Period = a_us;
TIM_TimeBaseInit(TIM3, &TIMER_InitStructure);
TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
// TIM_Cmd(TIM3, ENABLE);

}

void TIM3_init(void)
{
// TIMER3
NVIC_InitTypeDef NVIC_InitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

TIM3_Set_Period(2); // по умолчанию прерывание через 2 мкс

/* NVIC Configuration */
/* Enable the TIM4_IRQn Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}

void TIM3_IRQHandler(void)
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
{

/* Даём знать, что обработали прерывание */
TIM_ClearITPendingBit(TIM3, TIM_IT_Update);

TIM_Cmd(TIM3, DISABLE);

switch(OneWire_step)
{
case Read_init:

OneWire_writePinHIGH();
TIM3_Set_Period(200); // здесь должно быть <15 мкс, а тут хоть 200 ставлю все равно температуру считывает, будь то и не меняет TIM_Period
OneWire_step = Read_Bit;

break;

case Read_Bit:

// - Read bit
OneWire_Bit = OneWire_readPin();

TIM3_Set_Period(60); // временной слот минимум 60 мкс
OneWire_step = End_slot;

break;


case End_slot:
OneWire_step = 0;
OneWire_done = 1;
break;
}; // end switch

if ( !OneWire_done ) {
TIM_SetCounter(TIM3, 0);
TIM_Cmd(TIM3, ENABLE);
}


}
}

uint8_t OneWire_readBit(void){

OneWire_done = 0;

// - Drop line
OneWire_writePinLOW();

TIM3_Set_Period(1); // низкий уровень не менее 1us
OneWire_step = Read_init;

TIM_SetCounter(TIM3, 0);
TIM_Cmd(TIM3, ENABLE);


delay_us( 100 ); // чтоб работало пока пришлось такой костыль подставить, пока не разобрался с настройкой таймера в прерывании

uint8_t Bit = OneWire_Bit;
return Bit;
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Ср апр 21, 2021 21:47:39 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -25
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2525
Рейтинг сообщения: 0
У меня на гитхабе. Как раз таймер + DMA. Таймер + прерывание не нужно: сильно напрягает ядро. Но я и такое делал (для STM8S, т.к. у них нет DMA).
UPD: прочитал, хотелки. Как-то это через одно место получается. Но можно и так: повесить 16 датчиков на все ноги одного порта (скажем, PORTB). Порты настроить на выход с открытым стоком. Избранным таймером при помощи DMA запинывать в порт по UEV данные в ODR, а по CC1 читать данные из IDR. Как раз подобным образом (только в одну сторону) я сейчас работаю с RGB светодиодной панелью.

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Пт апр 23, 2021 21:36:14 
Мучитель микросхем

Карма: 4
Рейтинг сообщений: 80
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Сообщений: 445
Откуда: 69.Ржев
Рейтинг сообщения: 0
зачем Вы разным объектам даете такие схожие имена, от "OneWire" в глазах рябит ;))
вот имена ваших двух функций "OneWire_readPin", "OneWire_readBit" - в листинге вы их быстро отличаете?

"... не пойму как в STM32 таймер работает, можно ли внутри прерывания таймера поменять значение ..."
таймер - периферия, ему фиолетово откуда вы к нему обращаетесь - с основного цикла или с обработчика прерывания.
Просто поменять то, что вы называете " значение перезагрузки" - это всего лишь:
TIM3->ARR = 60-1;
как видите для этого не нужны ни библиотеки ни оформление отдельной функции, но вот чтобы происходило то, зачем это делается надо немного подтянуть матчасть.
На примере -
TIM3->ARR = 60-1;
TIM3->EGR = TIM_EGR_UG;
TIM3->CR1 |= ( TIM_CR1_OPM|TIM_CR1_CEN );
(таймер остановлен), в ARR новое значение, EGR_UG - "проталкивание" значений регистров (в том числе ARR) в так называемые теневые, бит OPM - это если надо, чтоб таймер сам остановился после одного цикла, CEN - разрешить тактирование таймера (снятие бита- блокировать тактирование) !только тактирование - ни сброса значений, ни обновления регистров при этом не происходит.
Смениться значение периода и на идущем таймере (только по первой строчке, две последующие не нужны), но надо понимать влияние бита ARPE в регистре TIMx_CR1. все есть в RM0008 в картинках.

эти словеса не в качестве альтернативы к предыдущему сообщению, а просто как ответ на вопрос. :beer:


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 29 ]    , 2

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y