Jump to content

Влак с автоматично презареждане на батерията


legohead

Recommended Posts

Здравейте,

Споделям с вас нещо с което се забавлявах пред последните месеци.

Целта бе "интелигентен" влак, който автоматично да се предарежда безжично, когато нивото на батерията му падне под определено ниво.

За целта, използвах следните компоненти:

Сензор за различаване на цветове:

https://www.lego.com/en-us/product/color-distance-sensor-88007

Презареждаема батерия 9v:

https://www.amazon.de/-/en/gp/aw/d/B0DBZPDCZM?psc=1&ref=ppx_pop_mob_b_asin_title

Безжично зареждане:

https://www.amazon.co.uk/gp/aw/d/B088NRBHBP?psc=1&ref=ppx_pop_mob_b_asin_title

https://www.amazon.co.uk/gp/aw/d/B0BRPW7GVP?psc=1&ref=ppx_pop_mob_b_asin_title

И програма за управление в PyBricks (ще споделя по-късно)

При интерес от ваша страна ще споделя допълнителна информация.

Прикачам демонстративно видео:

1. Влакът се движи

2. При разреждане на батерията < 7v, влакът намалява скоростта си, и спира върху станцията за безжично зареждане

3. При зареждане на батерията > 7.05v, влакът продължава да се движи.

Зададените стойности за нива на волтажа са примерни.

Адрес на коментара
Сподели в други сайтове

from pybricks.hubs import CityHub
from pybricks.parameters import Color, Direction, Port
from pybricks.pupdevices import ColorDistanceSensor, DCMotor
from pybricks.tools import multitask, run_task, wait

# Set up custom colors.
Color.RED_TILE = Color(357, 97, 76)
Color.YELLOW_TILE = Color(49, 93, 95)

# Set up all devices.
city_hub = CityHub()
color_sensor = ColorDistanceSensor(Port.B)
color_sensor.detectable_colors((Color.RED_TILE, Color.GREEN_TILE))
train_motor = DCMotor(Port.A, Direction.CLOCKWISE)

async def subtask():
    while True:
        await wait(0)
        # Print battery voltage to terminal
        print(city_hub.battery.voltage())
        await wait(1000)

async def subtask2():
    while True:
        await wait(0)
        # If battery level > 7v, train should run:
        if city_hub.battery.voltage() >= 7000:
            city_hub.light.on(Color.GREEN)
            train_motor.dc(70)
        # If battery level < 7v, train should stop to charge:
        else:
            await Stop_to_charge()
            print('<<<Charging>>>')
            while not city_hub.battery.voltage() >= 7050:
                await wait(0)
            print('<<<Running>>>')

async def Stop_to_charge():
    await wait(0)
    # Look for red marker
    city_hub.light.on(Color.RED)
    while not await color_sensor.hsv() == Color.RED_TILE:
        await wait(0)
    # Slow down
    train_motor.dc(27)
    # Look for yellow marker
    while not await color_sensor.hsv() == Color.YELLOW_TILE:
        await wait(0)
    city_hub.light.on(Color.RED)
    # Stop
    train_motor.brake()

async def main():
    train_motor.dc(50)
    await multitask(
        subtask(),
        subtask2(),
    )


run_task(main())

https://code.pybricks.com/

Адрес на коментара
Сподели в други сайтове

@KAGPID

Цитат

Може ли да се направи следното: Слагаш батерия от китай и махаш пластмасата от PU хъба. Запазваш платката разбира се. Слагаш пластмасова кутия от китайските баттери: защото тя е с един брик по-ниска


Отговарям на въпроса ти тук:
Преди време попаднах на следния модел за 3д принтиране, който позволява да се намали обема на контролера, като се изнесе батерията извън него.
по този начин височината намалява значително
 

https://www.thingiverse.com/thing:4875839

large_display_Untitled.png

Адрес на коментара
Сподели в други сайтове

Супер - най-накрая да се запали още някой по Pybricks. Давам още една идея - прави се перон, в който влака се отклонява докато се зарежда. Може да се направи и с няколко влака и да си говорят / редуват ;)

Адрес на коментара
Сподели в други сайтове

Здрасти!

Отдавна използвам PyBricks, но за първи път в контекста на влакове.

Засега се въздържам от това да взимам допълнителни влакове, релси и стрелки.

Имам достатъчно започнати проекти с Техник :)

Адрес на коментара
Сподели в други сайтове

  • 1 month later...

Винаги съм мислел че за PyBricks трябва да се купи някакъв си техен брик. Щом работи с оригинални това прави нещата интересни!

Много яка идея, харесва ми и това което gibona каза, това за дисплей на някой влак може да е много яко!

Също така ми е интересно как си скрил зарядното във влака.

Редактирано от toddybear
Адрес на коментара
Сподели в други сайтове

Привет!

Радвам се, че споделеното е провокирало интереса ти.

Зарядното е залепено отдолу на влаковия мотор, тъй като долната му страна е плоска и с достатъчно голяма площ.

Адрес на коментара
Сподели в други сайтове

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Отговорете в темата...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Предишното ви съдържание бе възстановено.   Свободно редактиране

×   You cannot paste images directly. Upload or insert images from URL.

Зарежда...
×
×
  • Създай нов...