Problema con RTC

Calamaro:
il problema è che se tipo sono le 17:00 get_ora(); mi restituisce 1020 che rimane divisibile per 30 per 1 minuto quindi non va bene perchè la ventola si accende e si spenge 30 volte in un minuto e poi si spenge per 30min...

Hai semplicemente bisogno di una variabile di stato, un flag, che ti dice lo stato attuale della ventola.
Quindi la logica del tuo programma diventa questa:

SE tempo >= tempo_avvio E tempo <= tempo_arresto ALLORA
    SE stato_ventola = 0 ALLORA
        stato_ventola = 1
        AVVIA VENTOLA
    FINE
ALTRIMENTI
    SE stato_ventola = 1 ALLORA
        stato_ventola = 0
        ARRESTA VENTOLA
    FINE
FINE

In questo modo sia l'avvio che l'arresto della ventola lo fai 1 sola volta, grazie appunto al tuo flag.