LM317 и Python

Я расскажу как я применил Python в решении производственной задачи. Статья написана чисто в учебных целях для молодых людей, которые начали осваивать Python. Статья рассчитана на студентов и школьников старших классов. Электронщики и программисты ничего ценного для себя в этой статье не найдут.

Несколько дней назад на растущем производстве созрела необходимость создать некоторое оборудование. Секрета, собственно, в этом нет, но выкладывать подробности я не буду только потому, что это не интересно. Перейду сразу к делу.

Нужно изготовить программируемый источник питания, который должен переключать выходное напряжение по команде от микроконтроллера. Напряжения — фиксированные, то есть других значений как бы и не предполагается:

+9 В
+12 В
+15 В
+25 В
+28 В

В качестве стабилизатора я выбрал незатейливый и вдоль и в поперек изученный LM317L:

Значение резистора R1 рекомендовано производителем и равно 240 Ом. Мне нужно было только посчитать значений резистора R2 для всех указанных выше напряжений. Формула приведена на рисунке справа.

В принципе это можно было сделать на калькуляторе, но ко мне ходят заниматься студенты, которых я натаскиваю в Линуксе и в электронике. Примеры программ, на которых происходит обучение, обычно берутся с потолка. Надуманные примеры они не интересны для изучения. А тут — прямая производственная необходимость, суровые реалии жизни! В общем, пишем прогу на Питоне. Единственное, где я несколько отклонился от задания — это я добавил еще несколько значений напряжения. Чисто для наглядности.

#! /usr/bin/python
# coding: utf-8

# Расчет величины резистора R2 для стабилизатора
# напряжения на базе LM317

# Список выходных напряжений
Vout = [3.3, 5.0, 9.0, 12.0, 15.0, 20.0, 25.0, 28.0]

# Функция для расчета
def R2(Vout) :
  Vref = 1.25  # Опорное напряжение, В
  R1 = 0.24    # Сопротивление резистора R2, кОм
  Iadj = .05   # Ток управления, мА

  # Вот оно -- ради чего все это затевалось!
  R = (Vout - Vref) / (Vref / R1 + Iadj)

  return R     # Возвращаем результат

# Основная программа (аналог Си-шной функции main())
print 'Vout : R2'

# Организуем цикл. Переберем все элементы списка Vout
for v in Vout :
  # Обратимся к нашей функции, найдем значение R2 для конкретного v
  r2 = R2(v)

  # Напечатаем заданное напряжение и результат расчета
  print v, ' : ', r2

# Всё!

Сложного ничего нет. Вообще все до безобразия просто. Сохраняем текст программы в файле lm317.py. Потом делаем файл исполняемым с помощью команды chmod и запускаем. На экране должно появиться следующее:

$ ./lm317.py
Vout : R2
3.3  :  0.389857369255
5.0  :  0.713153724247
9.0  :  1.47385103011
12.0  :  2.04437400951
15.0  :  2.61489698891
20.0  :  3.56576862124
25.0  :  4.51664025357
28.0  :  5.08716323296

Хм. 😦 Работает. Приносит реальную пользу. Перенесу-ка я эту прожку из директория с учебными программами в директорий к pdf-кам на эту микросхему.

Основная учебная цель тоже достигнута. В проге используются следующие вещи: определение и использование функции, цикл for, список. Есть вывод в стандартный поток.

Думаю, студентам и школьникам должно понравиться.

Advertisements

2 responses to “LM317 и Python

  1. Повезло вашим студентам с преподавателем.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s